赞
踩
在SQL中,数字可以不需要单引号,但是字符串需要单引号闭合(不然识别不了)
SQL查询语句在字符串有单引号的基础上可能还加入了类似%
的通配符,也需要考虑将其闭合
提交的数据是编码后的值,网站接收后解码再交给SQL执行,需要考虑对Payload进行编码后提交
例如有些网站url传递的参数喜欢用md5
或者base64
编码后再进行访问
网站对输入的信息进行了加密,在SQL端解密后进行查询
编码型和加密型都只相当于多了一步数据格式变换,其注入方法依旧不变
对于可能是Base64
编码后的SQL注入:
python sqlmap.py -u "URL地址?id=NA==" --tamper=base64encode.py
可以看到网站id
值是Base64
值,因此使用--tamper
参数带上可以对注入点进行Base64
编码攻击的脚本
在平常注入攻击时经常使用单引号闭合前面的SQL查询语句,但是如果网站对符号进行了转义(在符号前面加\
)
也就是:' -> \'
这时就可以使用宽字节注入了,原理是中文乱码字符或者繁体字在存储时占用两个字节,而\
只占用一个字节,因此如果是 �'
(乱码字符编码是%df)
那么SQL转义后就是 �\'
,\
的空间被前面的乱码字符占用了,因此本身就被屏蔽掉了不能发挥作用
python sqlmap.py -u "URL地址?id=1" --tamper=unmagicquotes.py
使用--tamper
参数带上自动进行绕过转义的攻击脚本
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。