解题要点
【解题思路】
1)先进行CTF定点目录扫描
2)发现存在flag.php返回303数值
3)根据页面正常注册登录
4)在用户页面测试一下发现存在SQL注入
5)成功注入后,没在数据库里发现flag
6)检测此时数据库用户权限,发现是root
7)利用load_file()读取系统文件flag.php
【难点】
1)检测sql注入是被如何过滤了
2)sql注入用/**/来替代空格进行绕过
3)扫出flag.php目录异常
【漏洞点】
1)SQL注入
2)SSRF漏洞
步骤一:目录扫描
先进行常规的目录扫描,然后发现flag.php存在异常
我那里刚刚做的时候还是扫出303的,不知道为什么重开靶场后就扫不出来了,先用网图来吧
扫出flag.php目录,存在异常,这里网图显示返回0数据
我那里返回303状态码,反正都一样,能见到异常
但直接访问为空气
第二步:发现sql注入,并检测出root权限
跟着网页正常流程注册登录,点击自己名字进去个人中心界面
发现有个很可疑的漏洞点,随便一测各种报错
而且把报错路径显示出来了
再用报错注入一检测,整个数据库的东西都翻出来了
但就是没有flag
然后想到之前可疑的flag.php文件,既然扫出来了,那就是存在于网站的相同目录之下,那能不能找跳板进行访问,但这个操作需要挺高权限的呀
用user()函数,看了下自己的用户名,被吓了一跳,居然给了我们root
那岂不是天助我也,等于直接放水啊!
步骤三:SQL绕过后拿到flag
先直接用报错注入查看flag
本以为成功了,却只给了我一半回显
心中一万匹草泥马奔腾而过
没办法,那就用常规的联合注入吧,搞了一大轮发现居然是过滤了空格,各种研究后发现可以用/**/来代替,这里是个难点
经过测试,需要4列,但只有一个回显位置
然后使用load_file()函数读取就可以了(绝对路径上面已经爆出来了)
还有其他方法绕过的,我以后再写第二种方法