BUUCTF easy_tornado render模板注入

本文详细介绍了一种利用模板注入技巧破解网站安全的方法。通过解析给定的计算公式和URL参数,结合flag.txt、welcome.txt和hint.txt文件的线索,文章展示了如何找到cookie_secret,计算正确的filehash,最终获取flag的过程。

 

 

模板注入详解请看这里:https://www.cnblogs.com/cimuhuashuimu/p/11544455.html

题目一开始给了三个文件的链接,分别查看:

 

flag.txt里告诉我们文件在/fllllllllllllag里,welcome.txt我们给我们一个关键词render,经过搜索之后知道有render函数的模板注入;最重要的是hint.txt,给我们了一个计算公式:md5(cookie_secret+md5(filename))

其实看到这个计算公式我才开始注意到url里的参数,因为计算出来是一个哈希值嘛,看参数里有一个filehash:

合理怀疑这个filehash就是通过这个公式算出来的,结合flag.txt中的提示,再次合理怀疑我们通过文件名(/fllllllllllllag)并按照这个公式计算出对应正确的filehash,并且按照这种格式访问url,就可以得到flag.(我可真是个小机灵鬼)

那么问题来了,文件名知道,md5函数可以调用,这个cookie_secret怎么得到呢?这时候注意到我们还有一个线索没有使用:render,模板注入!

先试着在flag.txt的url里直接把文件名修改成/fllllllllllllag,发现报错了:

看这个错误页面还有一个参数呢!把参数值随便修改一下,发现显示出来的内容也会随之变化:

但是输入指令却好像是被过滤了:

菜鸡不知所措……

后来才知道还有一个操作可以看到题目的环境变量:

接下来就用这个cookie_secret计算就可以了,脚本附上:

import hashlib

def md5encode(str):
    m = hashlib.md5()
    m.update(str)
    return m.hexdigest()


name = '/fllllllllllllag'
secret = '9fdfa0bb-bf87-4cc8-9126-e00e9123222a'
name = name.encode()
bb = md5encode((secret + md5encode(name)).encode())
print(bb)

跑出来的结果:

然后访问就可以得到flag啦~

 

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值