利用GBK双字节编码突破PHP单引号转义限制进行SQL注入脚本安全

时间:2023-09-18 03:41:12 作者:丑xin 综合材料 收藏本文 下载本文

【导语】“丑xin”通过精心收集,向本站投稿了2篇利用GBK双字节编码突破PHP单引号转义限制进行SQL注入脚本安全,下面是小编给大家带来的利用GBK双字节编码突破PHP单引号转义限制进行SQL注入脚本安全,以供大家参考,我们一起来看看吧!

篇1:利用GBK双字节编码突破PHP单引号转义限制进行SQL注入脚本安全

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

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

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

当我们提交参数 %d5' ,经浏览器URL编码后为%d5%27,再经PHP URL解码后为 0xd50x27,再经PHP转义后为0xd50x5c0x27,即就是在0x27(')之前插入了转义符0x5c(\\)。当MySQL采用GBK编码连接时,0xd50x5c0x27 这一字节序列就被MySQL作为GBK编码理解:\\'。

这样就吃掉了PHP的转义符,从而突破了单引号转义的限制。

本地测试如下:

1.

2.$conn=0;

3.$conn = mysql_connect(“localhost”,“root”,“see2006”);

4.if(!$conn)

5.{

6.die(“不能打开数据库连接,错误: ”. mysql_error);

7.}

8.

9.//选择数据库

10.mysql_select_db(“test”, $conn);

11.

12.//设置mysql数据库输出数据的字符集

13.mysql_query(“set names 'gbk'”);

14.

15.$sql=“select * from  news where content like '%”.$_REQUEST['k'].“%'”;

16.echo“当前sql语句:”.$sql.“

”;

17.

18.$result=mysql_query($sql,$conn);

19.

20.if(!$result)

21.echo mysql_error();

22.

23.while($result && $row=mysql_fetch_array($result))

24.{

25.echo“$row[title]

”;

26.}

27.?>

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

单引号被PHP自动转义

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

利用#注释之后的SQL语句,语法正确

union猜字段数目和可显示字段的位置

union查看当前用户

union查看当前数据库名

union查看test数据库表名

union查看user表的name字段值

union查看user表的pass字段值

以上信息转载 hi.baidu.com/cdcxdzj/blog/item/43a514f7017711c3f3d38515.html

修补方法: 过滤提交过来的值

或者将magic_quotes_gpc设为off

篇2:利用双字节编码突破PHP单引号转义限制进行SQL注入脚本安全

今天看了黑防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如下:

$conn=0;

$conn = mysql_connect(“localhost”,“root”,“see2006”);

if (!$conn)

{

die(“不能打开数据库连接,错误: ” . mysql_error());

}

// 选择数据库

mysql_select_db(“test”, $conn);

// 设置mysql数据库输出数据的字符集

mysql_query(“set names 'gbk'”);

$sql=“select * from news where content like '%”.$_REQUEST['k'].“%'”;

echo “当前sql语句:”.$sql.“

”;

$result=mysql_query($sql,$conn);

if(!$result)

echo mysql_error();

while($result && $row=mysql_fetch_array($result))

{

echo “$row[title]

”;

}

?>

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

单引号被PHP自动转义

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

利用#注释之后的SQL语句,语法正确

union猜字段数目和可显示字段的位置

union查看当前用户

union查看当前数据库名

union查看test数据库表名

union查看user表的name字段值

union查看user表的pass字段值

利用双字节编码突破PHP单引号转义限制进行SQL注入脚本安全

手工注入脚本安全

mysql5.0注入原理脚本安全

Andys PHP Knowledgebase 0.95.4 SQL注入漏洞及修复

一次枫叶防注入程序漏洞手工入侵脚本安全

保驾护航 对登陆密码的设置进行限制WEB安全

利用GBK双字节编码突破PHP单引号转义限制进行SQL注入脚本安全(精选2篇)

欢迎下载DOC格式的利用GBK双字节编码突破PHP单引号转义限制进行SQL注入脚本安全,但愿能给您带来参考作用!
推荐度: 推荐 推荐 推荐 推荐 推荐
点击下载文档 文档为doc格式
推荐文章
最新范文
点击下载本文文档