前言
又到了久違的複習週了,真是可喜可賀(?)
這次的複習週 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}
,就成功破關了!