热门关键字:   网站安全  黑客攻防  安全漏洞  系统安全  网络安全

利用双字节编码突破魔法引号限制继续SQL注入

发布时间:2010-10-20 13:36文章来源:网络文章作者:redice 点击次数:
摘要:今天看了黑防2009精华本下册《双字节编码:PHP的隐形杀手》一文,深受启发。 当php.ini中magic_quotes_gpc被设置为on时,提交的参数会被转义,例如,单引号会被转义成了\'。一下子截断了字符型注入的路。 GBK双字节编码:一个汉字用两个字节表示,首字节对应...

今天看了黑防2009精华本下册《双字节编码:PHP的隐形杀手》一文,深受启发。

当php.ini中magic_quotes_gpc被设置为on时,提交的参数会被转义,例如,单引号会被转义成了\'。一下子截断了字符型注入的路。

GBK双字节编码:一个汉字用两个字节表示,首字节对应0x81-0xFE,尾字节对应0x40-0xFE(除0x7F),刚好涵盖了\对应的编码0x5C。

0xD5 0x5C 对应了汉字“誠”,于是 %d5%5c 经URL解码后为“誠”。

于是提交参数 %d5' ,经PHP自动转义后为 %d5%5c%27 ('被转义为了\',对应%5c%27),再经URL解码后,就变成了 誠' 。

这样就突破了单引号转义的限制。


本地测试如下:


测试脚本index.php如下:
 

  1. <?php 
  2. $conn=0
  3. $conn = mysql_connect("localhost","root","see2006"); 
  4. if (!$conn) 
  5. die("不能打开数据库连接,错误: " . mysql_error()); 
  6.  
  7. // 选择数据库 
  8. mysql_select_db("test", $conn); 
  9.  
  10. // 设置mysql数据库输出数据的字符集 
  11. mysql_query("set names 'gbk'"); 
  12.  
  13. $sql="select * from news where content like '%".$_REQUEST['k']."%'"; 
  14. echo "当前sql语句:".$sql."<br/><br/>"; 
  15.  
  16. $result=mysql_query($sql,$conn); 
  17.  
  18. if(!$result) 
  19. echo mysql_error(); 
  20.  
  21. while($result && $row=mysql_fetch_array($result)) 
  22. echo "$row[title]<br/>"; 
  23. ?> 




搜索关键字为空,显示所有条目

Click to Open in New Window


单引号被PHP自动转义

Click to Open in New Window


利用双字节编码绕过PHP转义,SQL语句出错

Click to Open in New Window

标签分类: 渗透技巧 脚本渗透

上一篇:ewebeditor 2.1.6 漏洞另类上传Exp (突破目录限制脚本执行)
下一篇:各种网站后门的万能密码总结