[CISCN2019 华东南赛区]Web4

进入题目

image

发现一个超链接、
右键检查
image

发现/read?url路径猜测后端语言不是php是python
点击超链接跳转到百度猜测存在ssrf漏洞
访问/etc/passwd成功
image

尝试访问/app/app.py源码成功
image

encoding:utf-8 import re, random, uuid, urllib from flask import Flask, session, request app = Flask(name) random.seed(uuid.getnode()) app.config['SECRET_KEY'] = str(random.random()233) app.debug = True @app.route('/') def index(): session['username'] = 'www-data' return 'Hello World! Read somethings' @app.route('/read') def read(): try: url = request.args.get('url') m = re.findall('^file.', url, re.IGNORECASE) n = re.findall('flag', url, re.IGNORECASE) if m or n: return 'No Hack' res = urllib.urlopen(url) return res.read() except Exception as ex: print str(ex) return 'no response' @app.route('/flag') def flag(): if session and session['username'] == 'fuck': return open('/flag.txt').read() else: return 'Access denied' if name=='main': app.run( debug=True, host="0.0.0.0" )

查看师傅解读

image

要访问/flag,用户为fuck且有session 抓包

image

发现jwt格式的session
解密

image

image

查看源码,看师傅解读
对于伪随机数,如果seed是固定的,生成的随机数是可以预测的,也就是顺序固定的,所以只要知道seed的值即可。这里的seed使用的uuid.getnode()的值,该函数用于获取Mac地址并将其转换为整数。
那么就需要读取Mac地址local_file:///sys/class/net/eth0/address
得到Mac地址:0xa275cf685e40
然后使用Python2得出**(Python2和Python3保留的位数不一样)
image

image

130.950614643
用flask_session_cookie_manager3.py工具

替换session

image

得到flag

posted @ 2024-07-07 14:09  vзn0m  阅读(75)  评论(0)    收藏  举报