Java教程

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

本文主要是介绍掌控安全学院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要转成十六进制

 

 

 

 

 

 第二关

 

 

判断是否有注入

 

 

 

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

 

这篇关于掌控安全学院SQL注入靶场宽字节注入的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!