webug---SQL注入之宽字节注入

宽字节注入原理:
在这里插入图片描述
如图,是一段源码,我们来看看这段源码的功能:

第一行是连接数据库
第二行是设置编码为gbk编码,即中文编码
第四行使用addslashes()函数,这个函数是用来转义单引号的,会将单引号转义为\',这样的话转义之后我们就无法闭合sql语句

例如:

select first_name,last_name from id='1';
上面的sql语句,如果是采用单引号闭合,那么经过addslashes()函数转义之后,就变成了:
select first_name,last_name from id='1\';
可以看出,这样之后就不能成功的闭合sql语句,导致后面的语句也无法执行

因为这个函数导致我们没有办法闭合,所以我们要尝试绕过,源码上面的编码是gbk中文编码,在中文编码中%df%25会经过浏览器解码之后变成一个中文汉字,%25就是\符号的url编码值;所以当我们在gbk环境下,我们输入%df’,%df后面有个单引号,因为单引号转义之后会变成’,那么语句变成:

select first_name,last_name from id='1%df';
转义之后:
select first_name,last_name from id='1%df\';
%df\在经过浏览器解码会变成一个中文汉字,即:
select first_name,last_name from id='1運';
这样我们就可以成功绕过啦

原理就是这样,明白了吧

给大家分享一篇宽字节注入文章:link

然后现在我们进入webug宽字节注入的靶场:
首先看一下页面本来的样子:
webug---SQL注入之宽字节注入_第1张图片
之后,我们尝试找注入点,尝试闭合:
webug---SQL注入之宽字节注入_第2张图片
webug---SQL注入之宽字节注入_第3张图片
webug---SQL注入之宽字节注入_第4张图片
在尝试了’、"、)以上三种符号闭合之后,页面都没有反应,所以我们猜测可能存在宽字节注入:

http://39.107.111.157:81/control/sqlinject/width_byte_injection.php?id=1%df%27

webug---SQL注入之宽字节注入_第5张图片
可以看到,页面报错了,说明存在注入点,我们现在用注释符把后面多出的单引号注释掉!

http://39.107.111.157:81/control/sqlinject/width_byte_injection.php?id=1%df%27 --+

webug---SQL注入之宽字节注入_第6张图片
注释掉之后页面返回正确,然后我们就可以按照正常的爆库、表、字段、数据的流程就可以啦!

你可能感兴趣的:(网络安全)