##備份是個好習慣
<?php
/** * created by phpstorm.
* user: norse
* date: 2017/8/6
* time: 20:22
*/include_once
"flag.php"
;ini_set
("display_errors",0
);$str
=strstr
($_server
['request_uri'],
'?')
;$str
=substr
($str,1
);$str
=str_replace
('key',''
,$str);
parse_str
($str);
echo
md5(
$key1);
echo
md5(
$key2);
if(md5(
$key1)==
md5(
$key2)&&
$key1
!==$key2
)?>
由php原始碼可以得知後台驗證的邏輯(所以php檔案的安全很重要)。在key1和key2的md5值相等時,頁面便反饋flag,而這個flag沒有在index.php檔案中定義過,那麼一定是在包含的flag.php中。
嘗試直接訪問flag.php,理所當然地失敗了。
重新審視**邏輯。str是當前的uri中『?』後面的字串,並且去掉了』key』這個單詞。而key1和key2是通過parse_str函式從str中解析出的,這裡可以用kkeyey繞過。接下來也不用md5碰撞,而是可以利用php中md5()函式在引數型別是陣列時返回null的特性,構造兩個陣列引數。具體如下:
得到flag:bugku
另一種方法是利用md5加密後的值,如果是0e***xx的格式,會被認為是科學計數法表示的0*10^***x,即這樣格式的值總相等。下列字串的md5值都是0e開頭:
qnkcdzo
240610708
s878926199a
s155964671a
s214587387a
s214587387a
關於md5加密得到0e開頭值的字串,參考: Bugku web 備份是個好習慣
開啟題目鏈結,沒有發現什麼線索,想到題目名稱 備份 考慮到一般備份的字尾為.bak,於是訪問 訪問後獲得網頁原始碼 created by phpstorm.user norse date 2017 8 6 time 20 22 include once flag.php ini set displa...
Bugku web 備份是個好習慣
點開後原始碼 created by phpstorm.user norse date 2017 8 6 time 20 22 include once flag.php 包含檔案 ini set display errors 0 報錯不顯示 str strstr server request uri...
新bugku web16 備份是個好習慣
1.備份是關鍵字,我們可以用御劍掃掃 得到 開啟之後由於題設備份檔案,故加上.bak swp錯誤 之後得到乙個檔案,開啟之後發現 科學計數法是 e 要使兩個數的值相等,以0e開頭的md5值可以繞過限制。構造payload kkeyey1 qnkcdzo kkeyey2 240610708 法二 漏洞...