掌控安全学院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要转成十六进制

 

 

 

 

 

 第二关

 

 

判断是否有注入

 

 

 

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

 

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...