sql绕过转义符注入
Posted lwfiwo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql绕过转义符注入相关的知识,希望对你有一定的参考价值。
宽字节绕过总结
1、 重点:转义符反斜杠\,ASCII码0x5C
2、 在双字节字符集中, 在\前面增加高字节,0x5C被当做低字节,组合为“汉字”,导致\符号被“吃掉”,后续字符逃出限制,从而绕过转义。
3、 GB2312编码里\不会被“吃掉”。
4、 GBK,GB18030,BIG5等低字节符范围中含有0x5c的双字节字符编码集均存在宽字节注入/绕过。
5、 UTF编码方式\不会被“吃掉”
6、 程序中使用转码函数不当,也会出现宽字节注入/绕过,这时候跟页面编码无关
示例:
某存在SQL注入的业务场景,注入一个单引号之后,URL和SQL语句如下:
http://example.com/index.php?username=alan’
-->
Select * from tb where username=‘alan\’’
核心问题是要把反斜杠\消除,将注入字符替换为%df’,URL和SQL语句如下:
http://example.com/index.php?username=alan%df’
-->
Select * from tb where username=‘alan%df\’’
由于%df\ à %df%5c à 運,最终构成的SQL语句为:
Select * from tb where username=‘alan運’’
注入的%df与系统自动添加的反斜杠一起,构成了一个unicode字符集中的字符“運”,从而消除了反斜杠,使得注入的单引号闭合了前面的查询语句。
以上是关于sql绕过转义符注入的主要内容,如果未能解决你的问题,请参考以下文章