Less-32
宽字节注入
先试一下单引号注入,多了一个?
查看一下源码。
多了一个函数:addslashes()
了解一下这个函数:在 单引号 ‘,双引号 “,反斜杠 \还有NULL前面加上反斜杠\。
源码中使用的是gbk编码,gbk两个编码就代表一个汉字,再\前面加%df就形成一个汉字,单引号逃逸出来。
了解一下宽字节:https://blog.csdn.net/weixin_39934520/article/details/105870860 来自大佬博客。
这样就ok了举个例子吧:?id=-1%bb' union select 1,2,group_concat(username,password)from users--+
Less-33
Less-32是自定义的过滤器,本关直接使用了 PHP 的addslashes()函数
addslashes()与stripslashes()函数
addslashes(string)函数返回在预定义字符之前添加反斜杠\的字符串:
单引号 ‘
双引号 “
反斜杠
空字符 NULL
该函数可用于为存储在数据库中的字符串以及数据库查询语句准备字符串。
注意:默认地,PHP对所有的GET、POST和COOKIE数据自动运行addslashes()。所以不应对已转义过的字符串使用addslashes(),因为这样会导致双层转义。遇到这种情况时可以使用函数get_magic_quotes_gpc()进行检测。
stripslashes(string)函数删除由addslashes()函数添加的反斜杠。
Less-34
post型
正常登入,本题也是宽字节注入。
这题不是get型,不是以URL形式提交的?其实还是差不多的。
但是直接在页面输入,怎么试都错误,应该是post型提交有不一样。打开burp抓包
果然%被转义成%25,在burp换成%即可。
Less-35
定型:为含addslashes数字型注入。
基本和第二关差不多了。
**但是特别注意有引号的,’security’要变成16进制,这是MySQL本身支持的查询方式,也就不需要用到单引号了。
Less-36&&Less-37
也是宽字节注入,加入%df和/组成一个字符。