BUGKU 備份是個好習慣

2021-09-20 08:19:58 字數 1376 閱讀 7913

開啟頁面之後發現是這個樣子,檢視原始碼也沒啥好東西。

檢視檔案原始碼

<?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)

?>

這段**大概意思是:首先獲取當前的uri,接著把uri中「?」以及「?」之後的字串賦值給變數,然後再刪掉「?」再賦值給變數,如果字串中含有「key」,將key替換為空.再將字串解析到變數中,再比較key1.key2的md5值。

解析流程:

url:?key1=***&key2=***

獲取uri,也就是獲取網域名稱後面的東西/web16/?key1=***&key2=***

獲取?key1=***&key2=***

獲取key1=***&key2=***

再通過parse_str函式,url引數key1,key2變為變數$ key1,$key2

$str = str_replace(『key』,』』, $str) 【正常傳參的話,key會被置換為空,通過構造kkeyey來繞過】

想要獲得flag,需同時滿足key1.key2的md5值相等且key1的值等於key2的值。

繞過方式:

1.md5無法對陣列進行構造,傳參為陣列返回null,滿足條件。

?kkeyey1=***&kkeyey2=ccc

2.利用php弱型別getflag

?kkeyey1=240610708&kkeyey2=qnkcdzo

240610708 md5加密:0e462097431906509019562988736854

qnkcdzo md5加密:0e830400451993494058024219903391

0e在比較的時候會將其視作為科學計數法,所以無論0e後面是什麼,0的多少次方還是0

php弱型別詳解參考部落格:

BUGKU 備份是個好習慣

這兩天放鬆了兩天,感覺有點玩的攤下來了,還是要堅持刷題啊!首先開啟題目,根據題目意思肯定是要找備份檔案,用御劍掃瞄,結果沒有自己想要的結果 嘗試在index.php後加上bak 備份檔案的副檔名一般為 swp,bak 開啟後發現是乙個檔案,直接用記事本開啟是一段 審計 可以知道key1,key2都被...

bugku 備份是個好習慣

開啟是一段神秘 我也不知道是什麼 直接解密試試 嘗試各種,發現是md5,解開是。可能需要我們傳什麼東西進去,抓包看看,無果。看看題目是備份,可能這道題就和備份檔案有關 我就直接點了,直接開啟御劍,新增幾個php和檔案的掃瞄 原來是備份的bak檔案 直接開啟網頁看看 發現是一段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 取得當前url的路徑位址查詢...