0


宽字节注入%df的理解

宽字节注入是sql注入的一种手段,利用mysql使用GBK编码(因为GBK占用2个字节,而ascii占用1个字节),将两个字符看作一个汉字,从而消除转义字符\。(当某字符的大小为一个字节时,称其字符为窄字节当某字符的大小为两个字节时,称其字符为宽字节。所有英文默认占一个字节,汉字占两个字节。)

以下是个人总结对%df的理解

为什么使用%df

不一定使用%df,但前一个字节ascii码要大于128才到汉字的范围。

为什么那么多人都用%df

and被php转义后就是%df

逃逸过程

php.ini中有一个get_magic_quotes_gpc功能,在开启时所有的 ' (单引号), " (双引号), \ (反斜线) and 空字符会自动加上转义符\。

以'单引号为例,如何使'中的'逃逸出来:

?id=1%df' and 1=1--+

%df'=>%df'(单引号会被加上转义字符\)

%df'=>%df%5c'(\的十六进制为%5c)

%df%5c'=>縗'(GBK编码时会认为这时一个宽字节)

'成功逃逸,sql语法正确

sqlmap中同时也存在宽字节绕过的脚本unmagicquotes.py,使用方式如下

sqlmap -u "ip" --tamper="unmagicquotes.py" --batch
标签: sql mysql php

本文转载自: https://blog.csdn.net/qq_18980147/article/details/127502369
版权归原作者 tpaer 所有, 如有侵权,请联系我们删除。

“宽字节注入%df的理解”的评论:

还没有评论