綜合能力測驗 - 破關紀錄


Posted by ai86109 on 2020-08-26

前言

又到了久違的複習週了,真是可喜可賀(?)

這次的複習週 Huli 一樣準備了小遊戲,就直接來玩玩看吧!

以下是我的解題心得


提示0

一打開會是個空白的網頁,下意識打開 devtool 檢查,會看到 body 的地方有一些 PHP 程式碼的註解。

$mode == "start" 的時候,會啟動以下程式碼,又發現 mode 是由 $_GET 所拿到的,所以代表我們可以利用 query string 的方式讓變數拿到值。

因此在網址列輸入 http://mentor-program.co/huli/game/index.php?mode=start


提示1

出現了

提示 #1 : 你必須想辦法列出所有步驟才能繼續

回頭看 PHP 程式碼,裡面的 sql 是 ORDER BY number $restriction

上面寫到如果在 query string 裡有找到 norestriction 這個變數,則 $restriction 這個值就會是空,所以就可以把所有值印出來,而非只有一筆。

這邊要提的是,isset 是看變數是否存在,就算沒有值也會回傳 true,而 empty 則是會看是否有值,否則回傳 false。

因此在網址列輸入 http://mentor-program.co/huli/game/index.php?mode=start&norestriction 即可


提示2

出現了

提示 #2 : 看一下 CSS 不會少塊肉

往下看把這個屬性勾掉

.hidden {
    display: none;
}

剩餘的提示就會顯示出來了


提示3

提示 #3 : 你有看到我的按鈕嗎?

往下看會看到 input,一樣把 display: none 勾掉,讓按鈕出現。

按下按鈕之後,到 console 會看到

你成功按下按鈕了!
少了些什麼...

提示4&5

提示 #4 : 看一下 JavaScript 搞不好會有什麼發現
提示 #5 : 別忘了遺漏的變數

下面找到 ./script.js 那行,右鍵 open in a new tab,來觀看原始碼。

可以看到當點下按鈕後,如果 myMissingNumberToSetToMakeTheRequest !== 'undefined' 就會執行以下程式碼取得資料。

回到 console 輸入 myMissingNumberToSetToMakeTheRequest = 1,再按下按鈕。

會拿到一串亂數
{hint: "54ceb91256e8190e474aa752a6e0650a2df5ba37", error: "數字錯誤"}

把這串 hint 拿去餵狗,會找到原來這一串亂數是由 SHA-1 這種雜湊函式產生的,到推回去原始輸入為 56

回到 console 輸入 myMissingNumberToSetToMakeTheRequest = 56,再按下按鈕。

就會得到 {s: "恭喜破關!flag: m3nT0rPr0GRAm666", error: false},就成功破關了!


#web game







Related Posts

[C#] Asp.net Webform 使用Callback

[C#] Asp.net Webform 使用Callback

React Hooks - Day7

React Hooks - Day7

[Day 01] - Vault 的簡單介紹及安裝

[Day 01] - Vault 的簡單介紹及安裝


Comments