Easy_tornado
进入题目网站,发现三个文件
首先进入第一个文件Orz.txt,发现提示渲染函数render(),直接将文件内容显示在网页上
再进入第二个文件hint.txt,发现提示md5(cookie_secret + md5(filename))
,即先将filename
md5加密,再将cookie_secret
与md5加密后的filename
进行md5加密,也就是说,目前我们需要知道的是filename
和cookie_secret
之后,再进入第三个文件flag.txt,发现提示像文件名/fllllllllllag,
于是考虑filename=/fllllllllllag
但是提示有签名错误,发现/error?msg=签名错误
,考虑服务端模板注入(ssti攻击)
尝试输入/error?msg={{1}}
,确实是存在模板注入
尝试输入/error?msg={{7*7}}
,不存在运算
之后进行各种尝试与资料获取发现对于tornado框架存在附属文件handler.settings,于是尝试输入/error?msg={{handler.settings}}
发现 'cookie_secret':
'1B]c{ey<lzkHJGipa+X[Kn?Wd08C(&*TUZ4g6wrfMSRoQ7h^%V-5bAvm2Px>~I9_'
于是进行前面所分析的md5加密
最后输入?filename=/fllllllllllag&signature=20e954ed0f6c471e2ea1f151c7bb6334
得到flag
-
PS:
-
有关于渲染函数render():
-
有关于服务端模板注入(ssti攻击):
-
有关于tornado:
https://blog.csdn.net/belalds/article/details/80575755
有关于Tornado.web.Application的settings参数:
-
Ltshop
首先进入网页后,观察到有sign up
点击sign up 进行注册
再点击sign in 进行登录
进入一个买辣条的界面,可以知道,5元可以买一包大辣条,多包大辣条可以换一包辣条之王,多包辣条之王可以换Flag
进入info查看余额,发现,至多可以买4包大辣条,不满足辣条之王的兑换
尝试条件竞争 打开burpsuit 点击大辣条的购买窗口,抓取数据
发送到Intruder
,点击Positions
,点击clear
点击Payloads
点击Option
点击Start Attack
等待一段时间后,Forward
再次查看Info,发现买的数量明显超过预期
但是这样还不够,发现辣条之王有填写兑换数,尝试整数溢出 因为最长为longlong,即存在2^64,又因为5包大辣条换一包辣条之王,故最多可换3689348814741910323包辣条之王,溢出再加一包,即为3689348814741910324包,输入后溢出,成功获得足够数量的Flag
点击兑换,得到flag