读题
PS: tornado 查资料发现 Tornado (python的web框架)
-
打开题目发现三个文件
-
第一个文件
说明flag应该是在fllllllllllllag文件中
-
再进入第二个文件
-
进入第三个文件
发现提示md5(cookie_secret + md5(filename))
,即先将filenamemd5
加密,再将cookie_secret
与md5
加密后的filename
进行md5加密,也就是说,目前我们需要知道的是filename
和cookie_secret
测试后发现还有一个error界面,格式为/error?msg=Error
,怀疑存在服务端模板注入攻击 (SSTI)
尝试输入/error?msg={{1}}
,确实是存在模板注入
尝试输入/error?msg={{7*7}}
,不存在运算
之后进行各种尝试与资料获取发现对于tornado框架存在附属文件handler.settings,于是尝试输入/error?msg={{handler.settings}}
发现 ‘cookie_secret’:
a0139494-52c6-435e-a40b-a770a2bd7eef
- 构造payload
file?filename=/fllllllllllllag&filehash=**********************
PS:******************的内容是md5(cookie_secret+md5(/fllllllllllllag))
- 简单说这个过程就是先
/fllllllllllllag
进行md5加密,加密后是3bf9f6cf685a6dd8defadabfb41a03a1
,然后cookie_secret
,也就是:
a0139494-52c6-435e-a40b-a770a2bd7eef
再与/fllllllllllllag
经过md5加密后的形式,也就是3bf9f6cf685a6dd8defadabfb41a03a1
,进行结合,再进行一次md5加密,也就是a0139494-52c6-435e-a40b-a770a2bd7eef3bf9f6cf685a6dd8defadabfb41a03a1
进行md5加密,加密后是f5ea1957c3f9b84ff657e1bb22711d2b
,也就得到了上面的***********
- 得到flag