BUUCTF__[护网杯 2018]easy_tornado_题解

一、

  • 打开题目,有3个txt文件
    BUUCTF__[护网杯 2018]easy_tornado_题解_第1张图片

  • 分别访问

  • flag.txt
    在这里插入图片描述

  • welcome.txt
    BUUCTF__[护网杯 2018]easy_tornado_题解_第2张图片

  • hints.txt
    BUUCTF__[护网杯 2018]easy_tornado_题解_第3张图片

  • 三个txt文件得知三个有用信息,其中通过题目easy_tornado和welcome.txt中的render可以得知,这里应该是ssti(服务端模板注入)。

  • 再可以通过访问三个文件的url变化发现有用信息。

    - flag.txt      http://a94b8b6d-b92a-4343-8a35-d8bd8498a002.node3.buuoj.cn/file?filename=/flag.txt&filehash=c521f8ce0c1d93546587d4f5d3b8465b
    - welcome.txt   http://a94b8b6d-b92a-4343-8a35-d8bd8498a002.node3.buuoj.cn/file?filename=/welcome.txt&filehash=35282a33c5ba2e39187575e96f35085e
    - hints.txt     http://a94b8b6d-b92a-4343-8a35-d8bd8498a002.node3.buuoj.cn/file?filename=/hints.txt&filehash=3a7f053104fbb0665b08f71d8fbf7f94
    
  • 可以看到存在变量 filename 和 filehash 。

  • 并且 变量 filename 的值总是为要访问的文件,再根据提示三和 filehash 三个不同的值猜测 filehash 的值为MD5加密后的字符串。

  • 先尝试访问提示一中的 fllllllllllllag ,让filename的值为 /fllllllllllllag,发现url发生变化并且提示错误。
    BUUCTF__[护网杯 2018]easy_tornado_题解_第4张图片

  • 接下来就必须先了解一下ssti(服务端模板注入)才能往下做。

二、

1、首先就是什么是服务端模板

  • 我的理解是相当于很多公式,根据变量输出结果。这里的模板就是模板引擎根据数据自动生成前端页面。
  • 这里就是基于 Python 开发的 一种 Web 模板 Tornado 。
  • 具体参考 Tornado 官方文档 https://tornado-zh.readthedocs.io/zh/latest/

2、然后就是什么是ssti(服务端模板注入)

  • 我的理解是错误的执行了用户输入。类比于 sql 注入。
  • 具体参考 https://xz.aliyun.com/t/3679

3、再就是这里的提示二中的render是什么

  • 是 Tornado 中的一个渲染函数 ,我的理解就是一个公式,能输出前端页面的公式。
  • 具体参考 https://xz.aliyun.com/t/3679
    https://www.jianshu.com/p/aef2ae0498df

4、最后是提示三中的cookie_secret是什么。

  • 就是一个参数,也就是 cookie ,所以我们需要获取 cookie 。
  • 这里就有一个这题最主要的一个知识点
  • 在tornado模板中,存在一些可以访问的快速对象,这里用到的是handler.settings,handler 指向RequestHandler,而RequestHandler.settings又指向self.application.settings,所以handler.settings就指向RequestHandler.application.settings了,这里面就是我们的一些环境变量。
  • 其实这里就很难理解为什么,找了很多博客包括官方文档也没有更详细的解释。
  • 暂时当做一个知识点来记,以后如果详细了解了再回来更。

三、

1、根据上面的提示,想要得到flag, filename= /fllllllllllllag , filehash=md5(cookie_secret+md5( /fllllllllllllag))。
2、所以还需要解决一个问题就是得到cookie_secret。
3、根据上面内容得到cookie

-    http://6063a0f4-4006-4d36-8520-b6e058648b47.node3.buuoj.cn/error?msg={
    {handler.settings}}

在这里插入图片描述

4 、最后可以自己写一个脚本获取md5后的字符串,这里我用的PHP。运行一下就行。


echo md5('f03d04f0-456b-4577-b431-bd29fd3292d2'.md5("/fllllllllllllag"));
?>

5、 payload:

 -   http://6063a0f4-4006-4d36-8520-b6e058648b47.node3.buuoj.cn/file?filename=/fllllllllllllag&filehash=5aa9f0f37f8fce2753303bae0ea18436
 -   这里的filename值为动态,具体需根据cookie用脚本算出。

6、最终得到flag
BUUCTF__[护网杯 2018]easy_tornado_题解_第5张图片

四、

  • 这题不难吧,主要是 handler.settings 这个知识点
  • 附上原题链接 https://buuoj.cn/challenges#[%E6%8A%A4%E7%BD%91%E6%9D%AF%202018]easy_tornado
  • 持续更新BUUCTF题解,写的不是很好,欢迎指正。
  • 最后欢迎来访个人博客 http://ctf-web.zm996.cloud/

你可能感兴趣的:(BUU做题记录)