SQL注入之宽字节注入
本人记录这些为了学习的同时,能够有很好的记录,所谓好记性不如烂笔头,同时发布出来,也是希望大家有朋友学习到这里想上网搜索一些东西,以便借用和探讨一些问题,总之,不断学习!!
自我修养:没有一个系统是安全的
今天讲SQL注入之宽字节注入!
理解
宽字节注入是指什么呢?
现在大部分,如百度这些,都是UTF-8编码,占3个字节;像采用了GBK编码的这种数据库,占2个字节。
这样就会导致编码有时不统一,那我们就引入了宽字节注入。
实例讲解
我们所用例子还是:
当我们输入:?id=1’ select 1,2,3%20 %23,发现上面部分是没有报错的。
然而当我们输入:?id=1’ select 1,2,3%20时,发现上面部分仍然没有报错(回显点没有按照我们想象的那样出来),但是图片下面显示我们可以发现下面,提示了1’,由此可知我们的引号被 \转义了。下面提示出问题所在了
我们想利用引号来SQL注入,但是现在确被转义了,又该怎么做呢?
这里我们就要进行构造payload了,既然我们输入的 '会变成 ’ 那么我们就想办法拿掉这个\,因为我们知道由于URL编码 ’ => %5c%27
所以这里我们构造 %df%5c,来利用JDK编码,这个涉及JDK编码知识,详细还请大家具体去网上了解,我这里直接告诉大家:
%df%5c 是一个繁体汉字【数据库是JDK编码的,我们这样构造两个字符】
那么我们输入就变成 ?id=%df’ union select 1,2,3 %20%23 => (?id=[汉字]’ select 1,2,3%20%23),由此我们的引号就把前面的都消掉了。
宽字节的核心到这里就基本上解决了,后面的步骤和前面讲的时间、盲注SQL类似逻辑思维,所用工具仍然是burp
今天的学习就到这里,持续学习中