微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

掌控安全学院SQL注入靶场宽字节注入

PHP中,magic_quotes_gpc这个函数为on时,就开启了转义功能,另外addslashes和MysqL_real_escape_string也可以实现转义功能。可转移的的内容包括:单双引号、反斜杠、NULL字符。

宽字节注入过滤原理:

PHP发送请求到MysqL时经过一次gbk编码,PHP获取到数据进行魔术引号的处理。因为gbk时双字节编码,所以我们提交的"%df"这个字符和转义的反斜杠组成了新的汉字,然后数据库处理时是根据GBK去处理的,这个时候单引号就逃逸了出来。

宽字节注入绕过原理:

我们提交的数据会被加入"\","\"的编码是"%5c",我们在前面加上"%df"就变成了”%df%5c“,这个时候就变成了繁体字"運",变成了一个多个字节的字符。

为什么最后的查询语句表名要用16进制编码?

因为要用到单引号,会对查询产生影响,单引号会被加上反斜杠。

宽字节注入不是报错注入,且宽字节注入适合所有场景。

'admin'处除了16进制绕过外还有什么方法

还可以通过子查询的方式绕过,将原来查询的'admin'换成

(select table_schema from information_schema.tables where table_schema=database() limit 0,1)

解决思路

1.判断是否转义
2.使用字符让其与\形成一个汉字
3.判断是否存在sql注入
4.判断有几个字段
5.爆破库名
6.爆破表名
7.爆破字段名
8.爆破字段值宽字节注入(一)

第一关:

输入单引号,发现被转义了

 

 尝试闭合掉转义字符

 

 判断是否存在sql注入

http://inject2.lab.aqlab.cn/Pass-15/index.PHP?id=1%df' and 1=1-- qwe
http://inject2.lab.aqlab.cn/Pass-15/index.PHP?id=1%df' and 1=2-- qwe

 

 判断字段数

 

 

 

 

 

 

 

 将china_flag要转成十六进制

 

 

 

 

 

 第二关

 

 

判断是否有注入

 

 

 

 在利用布尔盲注就可以了,或者是联合查询

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐