您好,登錄后才能下訂單哦!
題目提示:
1. Again your mission is to extract an md5 password hash out of the database.
需要獲取數(shù)據(jù)庫中的密碼信息,而密碼是經(jīng)過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. 可以查看部分關(guān)鍵源代碼,注入點(diǎn)居然還是這一句:
$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; } }
實(shí)際做起來確實(shí)如此,時間稍微長一點(diǎn)就提示說太慢了,只好重來。。。
解題:
看別人的writeup提到可以通過sleep函數(shù)然后根據(jù)響應(yīng)時間來判斷
' or sleep(ord(substr(password,1,1)))
經(jīng)過試驗(yàn)取ascii碼來判斷影響時間太長,由于本次字符限定在0-9,A-F之間因此將上面的判斷語句改為如下,后面發(fā)現(xiàn)時間還是不夠用于是除了個2,至于這里為什么減的是46各位自己思考吧,哈哈,個人感覺46最合適:
' or sleep((ord(substr(password,1,1))-46)/2) #
OK,注入成功,那怎么判斷延時的時間呢,這時候就需要通過firefox的firebug插件了,F(xiàn)12打開furebug,選擇網(wǎng)絡(luò)選項(xiàng)卡,選中HTML和保持兩個選項(xiàng),選擇保持是為了把歷史記錄保存下來后統(tǒng)一查看,這樣可以提高速度,清除選項(xiàng)就是清除歷史記錄。
好,現(xiàn)在開始了:
1. 重置題目execute a reset
2. 清除firebug歷史記錄
3. 從第一個字符開始注入直到第三十二個
4. 依次查看firebug中每次注入后響應(yīng)時間,注意要把鼠標(biāo)移動到時間線上在彈出的小窗上看最后一項(xiàng)接受數(shù)據(jù)的時間,時間小數(shù)位怎么取舍呢?以0.5為單位,超過部分舍去,比如0.76則認(rèn)為是0.5
5. 提前準(zhǔn)備好excel表格,計算char(x*2+46),x即為響應(yīng)時間
6. OK,整理好數(shù)據(jù)提交吧,是不是提示成功了,再重復(fù)兩次步驟這題就搞定了。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。