sqli-labs闯关学习笔记(五)//第三十二关

32.Bypass addslashes


//including the Mysql connect parameters.
include("../sql-connections/sql-connect.php");

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 . "
";
//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"); $sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1"; echo $sql; echo "
"
; $result=mysql_query($sql); $row = mysql_fetch_array($result); if($row) { echo ''; echo 'Your Login name:'. $row['username']; echo "
"
; echo 'Your Password:' .$row['password']; echo "
"
; } else { echo ''; print_r(mysql_error()); echo ""; } } else { echo "Please input the ID as parameter with numeric value";} ?> </font> </div></br></br></br><center> <img src="../images/Less-32.jpg" /> </br> </br> </br> </br> </br> <font size='4' color= "#33FFFF"> function strToHex($string) { $hex=''; for ($i=0; $i < strlen($string); $i++) { $hex .= dechex(ord($string[$i])); } return $hex; } echo "Hint: The Query String you input is escaped as : ".$id ."
"
; echo "The Query String you input in Hex becomes : ".strToHex($id). "
"
; ?>
前言:GBK(ctf题目中宽字节注入很常见)

1:

可以缩写为:
2:

  • GBK是在国家标准GB2312基础上扩容后兼容GB2312的标准(好像还不是国家标准)。GBK编码专门用来解决中文编码的,是双字节的。不论中英文都是双字节的
  • UTF-8 编码是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节),中文使用24位(三个字节)来编码。对于英文字符较多的论坛则用UTF-8 节省空间。另外,如果是外国人访问你的GBK网页,需要下载中文语言包支持。访问UTF-8编码的网页则不出现这问题。可以直接访问。
  • GBK包含全部中文字符;UTF-8则包含全世界所有国家需要用到的字符。
  • 中文汉字:字节数 : 2;编码:GBK,字节数 : 3;编码:UTF-8
  • :这篇文章写得非常棒,简略精要

有效的参考资料:

字符编码-百度百科
字符集-百度百科
URL编码-百度百科
sqli-labs闯关学习笔记(五)//第三十二关_第1张图片
sqli-labs闯关学习笔记(五)//第三十二关_第2张图片

通过靶场来理解

1
这是尝试输入单引号后返回的结果,可以看到单引号'转义为了\'
\'的url编码是%5c%27,然后我们利用一个url编码对应的字符(%df)来结合%5c对应的url编码,这样就是两个url编码挨在一起,就会变成汉字–>诚
sqli-labs闯关学习笔记(五)//第三十二关_第3张图片

你可能感兴趣的:(sqli-labs)