Wargame — HackThis!! Main Level ( 1 — 5 )

這個小型的 Wargame 最初是從一位朋友口中得知,之前就聽聞難度不難,但卻一直沒有機會好好嘗試…(畢竟我出現的時間不多 OTZ)

找了機會先把 Main Level 1~5 結束,並不是很困難。

接下來的 Write up 部分會輔以 Hackmd.io 撰寫,有任何錯誤煩請更正了!


Main Level 1

Do NOT enter your credentials below, these levels are here to test you. Find the correct details and proceed to the next level.
 
 If you get stuck check out the hint, forum posts and articles shown in the help section on the left.
Main Level 1

首先我們會看到一個讓你輸入帳號密碼的地方,但我們不知道要輸入什麼,第一步直覺是觀察網頁的 Source code. 我們按下了 F12 來觀看。

於是我們找到了以下的一段註解:

<! — username: in, password: out — >

帳號輸入 in,密碼輸入 out,成功解決這題。


Main Level 2

Main Level 2

這題完全沒有任何說明,給了與 Main Level 1相似的登入畫面。

那,我們還是一樣來觀察 Source Code,我們發現了兩行不尋常的東西:

<span style=”color: #000000">resu</span>
<span style=”color: #000000">ssap</span>

我來說明一下,這一關分別把「resu」「ssap」換上了與背景一樣的黑色,所以我們直接看 Source 就可以輕易找到,但如果…你很聰明的直接反白,恭喜你,你會直接看到答案。

Main Level 2–2

於是這一關也沒有難度的解決了,接下來的關卡不知道會不會很難?


Main Level 3

Main Level 3

也是與前兩關相似,那我們不囉唆直接觀看 Source:

function(e) {
 if (document.getElementById(‘user’).value == ‘heaven’ && document.getElementById(‘pass’).value == ‘hell’) {} else {
 e.preventDefault();
 alert(‘Incorrect login’)
 }

我們發現了在登入的時候會引入一個 Javascript 函式,看起來就是用這個函式來驗證帳號密碼的正確性,於是分別打入 heaven 以及 hell 順利通關。

小記:真的會有人使用 Javascript 來驗證帳號密碼的正確性嗎?因為如果是這樣實作不但會在前端就被人看光光,第二個是當用戶一多或者一更新,還要回來更新函式,顯得非常麻煩又沒安全性可言。如果是我絕對不可能 :P


Main Level 4

又是一樣的登入畫面,但我想過關手法可能開始會有一些變化了,但我們還是先觀察看看 Source Code,畢竟線索最有可能藏在那裡。

觀察了 Code 之後,首先我們找到一個可疑地方:

<input name=”passwordfile” value=”../../extras/ssap.xml” type=”hidden”>

有人可能看不懂,我稍微說明一下:「..」在目錄結構的解釋下,是「上一層目錄」的意思,所以「../../extras/ssap.xml」的意思就是要我們到目前網頁目錄的上兩層去找尋「extras/ssap.xml」這個檔案。

目前的網頁是:https://www.hackthis.co.uk/levels/main/4

那上兩層就會是:https://www.hackthis.co.uk/levels/

接下來就前往目的地:https://www.hackthis.co.uk/levels/extras/ssap.xml

這個檔案很明確的寫好了帳號密碼給我們,我們直接輸入就可通關。

<user>
<name>Admin</name>
<username>999</username>
<password>911</password>
</user>

小記:這一關考你目錄結構的觀念,如果不知道「..」意思的人可能會卡住,另外就是直接 import 包含帳戶資訊的檔案進前端是一件非常愚蠢的事情,希望這只會在這種 Wargame 看到,我們為資安雙手合十祈禱。


Main Level 5

Main Level 5

一開始就跳出了一個要我們輸入密碼的 Javascript 提示視窗,於是我們開啟 Debugger 去觀察有沒有什麼可疑的 Javascript 檔案或者程式碼。

果不其然,找到了以下這一段程式碼:

<script language=”JavaScript” type=”text/javascript”>
 var pass;
 pass=prompt(“Password”,””);
 if (pass==”9286jas”) {
 window.location.href=”/levels/main/5?pass=9286jas”;
 }
 </script>

prompt(A,B) 在 Javascript 是一個可以輸入文字的互動對話框,而分別用兩個參數去控制顯示內容,A 是輸入框外的說明訊息,B 則是會出現在輸入框裡的提示訊息,兩者個顯示位置不一樣。

window.location.href=”/levels/main/5?pass=9286jas”;

意思是將我們直接導向到 domain + “/levels/main/5?pass=9286jas”

所以這關也沒有難度,觀察一下 Javascript 就知道如何通關了,我們接著輸入密碼「9286jas」就直接拿到下一關的入場券。


後記:前五關玩起來都不難,也都是具備一些概念就可以快速通過的關卡,相信很多人也跟我一樣,很快就通過這五關,接下來的 6–10 不知道又會是怎麼樣的關卡呢?

一不小心就早上六點了,畢竟我出現的時間也都很怪,有時候還蠻擔心身體的負荷會不會太大,有人說寫程式的人肝都不好,我則是更甚呢(另一個我還真可憐…)

無論如何,對於我寫的或者有什麼不清楚的歡迎提問,有錯誤也歡迎直接提出,畢竟我也是剛接觸這部分的新手,還需要各位前輩多多指教了。

2017/7/27 6:13 am

Morrow.