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

[护网杯 2018]easy_tornado 1(两种解法!)

题目环境:
image.png
发现有三个txt文本文件

/flag.txt
/welcome.txt
/hints.txt

依此点开
image.png

flag在/fllllllllllllag文件中

image.png
image.png

在hints.txt文件中发现md5计算
md5(cookie_secret+md5(filename))

并且三个文件中都存在filehash(文件名被哈希算法加密32位小写)

猜测解题关键点在md5(cookie_secret+md5(filename))这里
首先flag在/fllllllllllllag文件中**,所以就是filename=/fllllllllllllag;**filehash=md5(cookie_secret+md5(filename))
现在只缺cookie_secret这个东西,只要有了cookie_secret再通过这个md5(cookie_secret+md5(filename))公式进行计算即可获取到flag

注意题目easy_tornado 1;tornado是python的一个模板,可以看出这道题是模板注入类的题目

改哈希值看看是否有变化
image.png
回车
image.png

模板注入必须通过传输型如{{xxx}}的执行命令

image.png
image.png
果然是tornado模板注入

在tornado模板中,存在一些可以访问的快速对象,这里用到的是handler.settings,handler 指向RequestHandler,而RequestHandler.settings又指向self.application.settings,所以handler.settings就指向RequestHandler.application.settings了,这里面就是我们的一些环境变量。

简单理解handler.settings即可,可以把它理解为tornado模板中内置的环境配置信息名称,通过handler.settings可以访问到环境配置的一些信息,看到tornado模板基本上可以通过handler.settings一把梭。

爆cookie_secret
error?msg={{handler.settings}}
image.png
得到cookie_secret
76fc62a3-fea5-46ab-8f95-4b7262246f8c
按照公式进行加密
image.png
/fllllllllllllag=3bf9f6cf685a6dd8defadabfb41a03a1
cookie_secret+md5(filename)
76fc62a3-fea5-46ab-8f95-4b7262246f8c3bf9f6cf685a6dd8defadabfb41a03a1
image.png
md5(cookie_secret+md5(filename))
39482391ef4cc45a75262be45e94c725
最终payload:
?filename=/fllllllllllllag&filehash=39482391ef4cc45a75262be45e94c725
image.png
当然也可以用python脚本进行加密

import hashlib  #选用哈希模块
filename = '/fllllllllllllag'  #文件名
cookie_secret = '76fc62a3-fea5-46ab-8f95-4b7262246f8c'#cookie_secret值
filename = hashlib.md5(filename.encode()).hexdigest()#/fllllllllllllag进行32位小写哈希md5加密
a = cookie_secret + filename#md5值进行拼接
filehash = hashlib.md5(a.encode()).hexdigest()#计算拼接后的md5值的md532小写的值
print(filehash)#输出加密后的md532位小写的值

image.png
image.png
得到flag:
flag{5ae1c44d-f83a-4005-a69b-a1ea133391db}

http://www.lryc.cn/news/227082.html

相关文章:

  • 冒泡排序(Bubble Sort)
  • JVM源码剖析之软、弱、虚引用的处理细节
  • Linux服务器上搭建JupyterNotebook教程
  • 记录bug1
  • 【MySQL】rank()、row_number()、dense_rank()用法详解
  • NFT合约部署
  • 【C++】从入门到精通第三弹——友元函数与静态类成员
  • acwing算法基础之搜索与图论--floyd算法
  • Zabbix监控SSL证书有效期
  • Arduino OneButton按键处理库实现单击/双击/长按功能
  • day52 django的下载与安装
  • WebGL智慧城市软件项目
  • VMware重装后没有虚拟网卡
  • 软件安全基础
  • 探索项目管理软件的多重用途和益处
  • Arduino ESP8266使用AliyunIoTSDK.h连接阿里云物联网平台
  • 【车载开发系列】AutoSar中的CANTP
  • JUL日志
  • ZZ308 物联网应用与服务赛题第G套
  • 如何使用 vcpkg 编译Google-V8脚本引擎(ECMA/JavaScript)?
  • 系列二十二、idea Live Templates
  • 电脑本地安装宝塔/docker 安装宝塔
  • Java Lambda 表达式笔记
  • Flutter笔记:状态提升、控制器模式、GetX控制器和服务
  • 9.spark自适应查询-AQE之动态调整Join策略
  • CentOs7 NAT模式连接网络
  • linux安装git
  • thinkphp6 起步
  • 会员题-力扣408-有效单词缩写
  • spring-cloud-stream