Appearance
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语句.