安恆月賽 2023年12月

2021-09-05 08:49:10 字數 2184 閱讀 4033

沒啥好說的,什麼牛不能跑?蝸牛

題目:解題思路:

拿到題目後,掃了一波:

發現:admin.php

進入檢視,顯示無法進入

檢視頁面資訊,發現user登入資訊,在儲存值可更改。

將其先進行url decode,dxnlcg==,然後,base64 decode,user

然後,考慮到admin登入,於是將admin先進行base64 eecode,ywrtaw4=,在進行url encode,ywrtaw4%3d,將其填入儲存值中。

然後重新整理頁面,進入

隨便在其中輸入,例如:a,抓包擷取反應

猜想命令輸入,嘗試:

ls
得到相應目錄

進而嘗試:

ls /     //查詢根目錄
發現,錯誤,考慮空格過濾

於是嘗試:

ls$/   //利用$代替空格
得到根目錄下的檔案目錄

發現:fflag_404.php

於是嘗試抓取該檔案:

cat$/fflag_404
得到flag:

題目

解題思路

進行**審計

首先對於class baby,定義了乙個類

再看下面,首先是繞過正規表示式:preg_match('/[oc]:\d+:/i',$data,$matches)

其中,[oc]代表$data中以o或c開頭,:表示含有:,\d表示有數字,/i表示不區分大小寫,$data為待匹配字串,$matches為儲存匹配上的字串

而要滿足if(count($matches))的話,則需要$data中沒有可以匹配的字串

再往下,看到$good = unserialize($data),序列化與反序列化函式,其特點是,一定會有o作為開頭,故一定會有匹配

解決辦法是,在:與數字之間加入+,且對+進行url編碼:%2b

那麼,首先將類:class baby實體化,進行序列化:

<?php 

@error_reporting(1);

include 'flag.php';

class baby

";

if (file_get_contents($filename))

}

} } $a=new baby();

$a->file='flag.php';

echo serialize($a);

?>

得到:

o:4:"baby":1:
然後,進行檔案讀取:

?data=o:%2b4:%22baby%22:1:
得到fla

安恆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 ...

安恆杯12月月賽

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