安恆四月月賽 DASCTF 部分題解

2021-10-05 19:29:22 字數 1810 閱讀 2303

----------------------------發現乙個寫了 但是丟著沒發的wp-------------------------

binwalk 能發現乙個7z

搜尋7z發現乙個檔案頭 還提示密碼是bluetooth pin txt

左上角檔案→匯出分組位元組流 然後搜尋pin可以找到pincode是141854

解壓獲得flag

直接給原始碼

<?php 

show_source

("index.php");

function

write

($data

)function

read

($data

)classa}

classb}

classc}

$a=newa

($_get

['a'],

$_get

['b'])

;//省略了儲存序列化資料的過程,下面是取出來並反序列化的操作$b=

unserialize

(read

(write

(serialize($a

))))

;

在我的專案中有曾經的 「flag.php」 正好可以驗證包含的成功與否

可以看到 當new的c物件賦值給b物件的變數的時候,成功包含了 「flag.php」

現在的問題就是如何通過傳引數讓a類與b類產生關係,這就涉及到了上面提及的「joomla rce漏洞」了,即利用「read」和「write」函式。

不難看到 當傳入 「\0\0\0」 經過序列化並write和read後 原本序列化出來的表示長度的6並沒用改變 但是字串的的長度由原本的6個變成了3個,所以反序列化時或將到下乙個『s』為止的字串都當成『username』的內容

所以我們可以在後面的引數傳入時構造**並讓前面引數最終多「吃掉」字元並閉合,這樣就可以在反序列化的時候包含「flag.php」了

所以我們可以傳入多個"\0\0\0"以吃掉後面的到password後的引號為止,這樣就可以自動閉合前面username的引號

要讀到自己構造的password 至少需要8個「\0\0\0」,因為雖然7個剛好可以讀到引號,但是沒能構造出分號 所以需要再讀「\0\0\0」,在後面構造處補分號並補齊前面username到引號 我這裡構造如下圖

我構造的password 前面補上 a"; 引號和分號不能變,a是任意字元

可以看到成功包含

安恆杯12月月賽

這次的月賽可以說非常適合我這種菜雞做了請求包中發現乙個user base64 解碼得到user,構造admin 然後base64提交 發現跳轉到後台admin.php 試了乙個ls發現有回顯,應該是個命令執行漏洞 構造 cmd ls ifs 成功回顯 然後讀取flag cmd cat ifs ffl...

安恆2023年12月月賽wp web部分

試試訪問admin.php,之後頁面顯示 you are not admin 因為題目並沒有登入功能,猜測可能要對cookie做點文章來偽裝成admin。用burp抓包看請求頭如下 發現user欄位,把值解base64得user 3d是 的url編碼,解碼的時候記得把 3d換成 根據這個思路,就把a...

2018安恆杯12月月賽復現

萌新因為種種原因沒有做安恆12月的月賽題,正巧這幾天發現復現,又學到了新知識!題目index.php給出原始碼 error reporting 1 include flag.php class baby if file get contents filename if isset get data ...