buuctf [护网杯 2018]easy"/>
web buuctf [护网杯 2018]easy
分解信息量:
1.题目名称是easy-tornado:tornado是python的web框架(web框架的产生是避免程序代码与html编码的编码混乱性,框架将传参过程进行独立)
2.打开一共三个链接,分别点开
/flag.txt 提示内容:flag in /fllllllllllllag ,意思就是flag在文件fllllllllllllag里面,需要考虑怎么进入文件里面
/welcome.txt 提示内容:render,render是tornado里面的渲染函数,就是对web网页界面进行编辑的函数,和template的渲染是相似的,主要区别render是以脚本的方式进行渲染,template是以html方式进行渲染。这个重点在于是服务器模板,基本可以确定这是ssti(服务器模板注入),服务器模板注入和sql注入等有相同性,问题的关键在于传参
/hints.txt 提示内容:md5(cookie_secret+md5(filename)),md5就是哈希编码
3.根据打开链接的url,里面有两个参数一个是filename,一个是filehash,也就是说filename是第一个文件的提示,filehash是第三个文件的提示,那么问题就是如何获取cookie_secret。
cookie_secret不是通用的属性,也就可以确定,应该是存放在服务器模板中的值,问题就转化为通过传参获取cookie_secret的值。
4.还有一个问题就是参数如何传进去,因为是服务器模板,我们需要进入服务器返回的链接进行传参,我们随便改一下filename,我改成111,传进去之后,无法识别,返回链接:81/error?msg=Error
也就是通过msg的值进行传参
5.Templates and UI — Tornado 6.1 documentation这个链接是tornado的官方文档,一个是通过文档我们获知传参的类型,另外一个是找到cookie_secret的赋值方法
为了不让大家去翻文档查找,我给大家把有用的内容截取下来
a.在template syntax中
传递的参数值应为{{值}}的格式
b.搜索cookie_secrue
cookie_secret在tornado.web.RequestHandler中的application的settings中,也就是需要传参RequestHandler.application.settings,但是传过去提示500,
在语法中其实有提示
然后有
所以传参应为{{handler.settings}},得到
6.用在线加解密方式进行md5计算得到filehash
flag{714597c9-0d1d-4c92-a960-4b2d1bd1f172}
更多推荐
web buuctf [护网杯 2018]easy
发布评论