Skip to content
On this page

sql注入之GBK编码

今天说一种绕过sql注入的手段就是gbk编码绕过。 比如下面的sql语句。

select * from users where username='$user_input'

其中$user_input来自用户输入,这里显然存在sql注入问题,只要输入a ' or 1='1. 就可以绕过,所以要对用户输入进行编码. 一般你来说就是一个escape函数,将'替换为\'.

我们知道'会被替换为',那么就可以针对性的绕过. 具体来说就是GBK编码.

原理

\对应的ascii码是0x5c,那么我们可以利用上述替换机制,将一个无效的字符和0x5c组成一个有效的GBK汉字即可. 比如最后的1='1替换为1=\xC4'1, 这样替换后就成了1=\xC4\X5C'1\xC4\X5C会被mysql识别为汉字,从而达到绕过的目的.

按照这个思路,找寻响应的汉字,就可以形成一个有效,并且闭合'的sql语句.