小白一枚,打个beescms本地靶场,第一次,望大佬不吝赐教
首先,访问本地搭建的靶场后台
因为是本地靶场,我就直接看代码了,先猜测登录出有注入
搜索关键字,找到判断登陆出,一般sql的关键字有select insert update mysql_query mysqli等
找到了这里
从这里开始看
这里能够看到,他是判断完账号密码后,在进行验证码的判断,也就存在了跑字典的可能
这边上面是声明了全局变量,下面开始判断用户user和密码password
跟进这两个函数,fl_value和fl_html,这两个函数应该就它对用户的过滤规则,我们定位他俩
这俩在这,
这就是fl_value这个函数,他就是过滤了常见sql语句,然而他只过滤了一边,我们还是可以用双写绕过的,接着往下看
fl_html调用了htmlspecialchars()这个函数,这里它 '转换后还是’,这里就造成了报错注入
sql注入拿到密码进入后台
接着找,在下图这个地方有个上传的地方
我们看一下代码,搜索关键字$_FILES
一般上传的关键字有$_FILES,type="file",上传,move_upload_file()等
点第一个进去
在右上角那个文件下,这不是我们之前找到的那个上传的地方,这是另一个,我们进去看一下!
上传文件,抓包看一下
这俩参数指向我们的地址
找到这俩参数,上面是接收文件,主要看is_uploaded_file这个函数
跟进它,全局搜索,我找到了他的规则
主要看下图
这是对type进行白名单检测,追踪$file_type这参数
主要看下面这两行
这是对后缀名的对比,然后抓包截断一下,上传不成功 ennnnn,这个地方不行
还是找到最开始得那个上传得地方看一下
就是这个上传点,找到它得代码
跟之前一样,直接找到它判断上传的地方
1
2
3
他只是检测了mime类型,并没有对文件后缀名判断
也就是说这个地方验证通过就可以了
直接改成php,然后上传成功,然后蚁剑上场,结束end
我是小白,第一次发稿,大佬留情,勿喷!!