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绕过转义符注入的主要内容,如果未能解决你的问题,请参考以下文章

jsp mysql 转义字符

JS转换HTML转义符,防止javascript注入攻击,亲测可用

宽字节注入

SQL语句中转义字符怎么写?

SQL语句中转义字符怎么写

转义字符有都哪些?