Bugku web 備份是個好習慣wireUp

2021-09-10 15:26:50 字數 1236 閱讀 5203

##備份是個好習慣

<?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 法二 漏洞...