您好,登錄后才能下訂單哦!
題目提示:
1. Again your mission is to extract an md5 password hash out of the database.
需要獲取數據庫中的密碼信息,而密碼是經過MD5加密的。
2. This time your limit for this blind sql injection are 33 queries.
最多可以注入33次。
3. Also you have to accomplish this task 3 times consecutively, to prove you have solved the challenge.
居然要連做三次才算成功,為什么。。。為什么。。。為什么。。。
4. 可以查看部分關鍵源代碼,注入點居然還是這一句:
$query = "SELECT 1 FROM (SELECT password FROM blight WHERE sessid=$sessid) b WHERE password='$password'";
居然還有時間限制:
/** * Check if you were too slow. * @return true|false */ function blightTimeout(){ if (false === ($start = GWF_Session::getOrDefault('BLIGHT2_TIME_START', false))){ return true; } else{ return (time() - $start) > BLIGHT2_TIME; } }
實際做起來確實如此,時間稍微長一點就提示說太慢了,只好重來。。。
解題:
看別人的writeup提到可以通過sleep函數然后根據響應時間來判斷
' or sleep(ord(substr(password,1,1)))
經過試驗取ascii碼來判斷影響時間太長,由于本次字符限定在0-9,A-F之間因此將上面的判斷語句改為如下,后面發現時間還是不夠用于是除了個2,至于這里為什么減的是46各位自己思考吧,哈哈,個人感覺46最合適:
' or sleep((ord(substr(password,1,1))-46)/2) #
OK,注入成功,那怎么判斷延時的時間呢,這時候就需要通過firefox的firebug插件了,F12打開furebug,選擇網絡選項卡,選中HTML和保持兩個選項,選擇保持是為了把歷史記錄保存下來后統一查看,這樣可以提高速度,清除選項就是清除歷史記錄。
好,現在開始了:
1. 重置題目execute a reset
2. 清除firebug歷史記錄
3. 從第一個字符開始注入直到第三十二個
4. 依次查看firebug中每次注入后響應時間,注意要把鼠標移動到時間線上在彈出的小窗上看最后一項接受數據的時間,時間小數位怎么取舍呢?以0.5為單位,超過部分舍去,比如0.76則認為是0.5
5. 提前準備好excel表格,計算char(x*2+46),x即為響應時間
6. OK,整理好數據提交吧,是不是提示成功了,再重復兩次步驟這題就搞定了。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。