本文首發於“合天網安實驗室”
本關實驗地址為:實驗:捉迷藏(合天網安實驗室)
預備知識
HTTP協議,報文的組成部分等,請參考<Wireshark數據抓包分析之HTTP協議>以及簡單的js腳本編寫能力。
打開服務器上的網頁然后看到進入第一關的按鈕,點一下。

跳到第一關,只有一些文字,那么我們不多BB,直接查看源代碼。

源代碼中有個注釋,要刪除1.php.bak,我們直接在地址欄中輸入試試。

然后來到了這個頁面,和第一關的頁面差不多,但是多了一些奇怪的符號,還是看一下源代碼吧。

源代碼中給出了第二關的地址,直接訪問。

進入到第二關后,出來一個輸入框和按鈕,然后提示點擊進入第三關,那么我們點一下

出現了詭異的提示,我們注意到第三關的頁面是3rd.php。點擊提示的確定后,又退回到第二關了。

此事必有蹊蹺。特別是這個輸入框,能讓我有插它的沖動,寫個alert看看能不能xss。
<script>alert(1)</script>

竟然彈框了,好激動好興奮的樣子。

那么我們構造一個a標簽來戳進去。<a href="3rd.php"></a>

發現不行,構造出的連接閃一下就沒了。
那么我們用【某種方式】重定向吧。
<script>window.location="3rd.php"</script>

成功繞過驗證,點擊就能進入下一關了。

這和前面也差不多,就是只有一些文字。查看源代碼也沒有收獲,那我們看看能否從文字中獲得關鍵信息

既然說是在眼皮底下,那我們就看看眼皮吧,查看一下HTTP原始請求包和返回包,發現在返回的報文中有個Next字段,提供了下一關的頁面。

那么按照提示,點完按鈕就結束了吧。

可是鼠標放到按鈕上,按鈕就不見了。

我們使用審查元素看一下,原來使用了display:none,將其改為display:block按鈕就出來了。

但是鼠標懸停還是沒有了,看一下上面的joy腳本,原來就是這個腳本隱藏了按鈕。


那么我們刪除這個按鈕的onmouseover="joy()",果然出現

點擊按鈕,找到key。
