news 2026/6/23 19:00:49

Flask任意文件读取+session伪造-NSSCTF-web4

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Flask任意文件读取+session伪造-NSSCTF-web4

1、打开环境,有个超链接readSomtthing,直接跳转到百度首页。

2、观察跳转URL,IP:PORT/read?url=https://baidu.com。结合提示,可能存在任意文件读取漏洞。

3、使用url= /proc/self/cmdline 读取当前进程对应的终端命令时,发现了app.py。审计代码:

# encoding:utf-8 import re, random, uuid, urllib from flask import Flask, session, request app = Flask(__name__) random.seed(uuid.getnode()) #用mac地址作为种子 app.config['SECRET_KEY'] = str(random.random() * 233) #根据上面的Mac地址,生成密钥。 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': #需要让username = fuck,才会读取flag return open('/flag.txt').read() else: return 'Access denied' if __name__ == '__main__': app.run(debug=True, host="0.0.0.0")

可以确定,当前用户是www-data,路由为/。当用户为fuck,路由为/flag时,可以读取flag。由此,需要进行session伪造。

4、session伪造必须要知道scret_key,代码里给出了方法:

random.seed(uuid.getnode()) #用mac地址作为种子 app.config['SECRET_KEY'] = str(random.random() * 233) #根据上面的Mac地址,生成密钥。

根据url=/sys/class/net/eth0/address拿到mac地址:02:42:ac:02:16:63。开始生成scret_key(这里需要使用python2,因为这个题目的环境是2,生成密钥用3的话,长度会长一些,伪造结果不对):

import random random.seed(0x0242ac021663) #也可以转为十进制的2485376915043 print(str(random.random()*233))

结果:10.937048099。

5、拿到scret_key之后,尝试对当前的session解密,看看对不对:

用户:www-data,说明密钥是正确的,开始伪造fuck的session:

刚开始用单引号报错,后来使用双引号正常出来session。替换、刷新、才出现flag。

6、/read路由过滤了flag、file关键字,也可以考虑编码绕过直接读取flag。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/23 12:01:25

Java面试Redis核心知识点整理!

大家都知道Redis的业务范围是非常广的,但是对于刚入行的小伙伴来说可能也就知道个缓存跟分布式锁。因为Redis的很多功能在一些小企业里,根本是用不到的,得等到并发量到了一定的程度,系统扛不住了,才会用到Redis那些高级…

作者头像 李华
网站建设 2026/6/22 6:12:23

9、数据足迹缩减:存储容量优化策略

数据足迹缩减:存储容量优化策略 1. 数据足迹缩减技术概述 在当今数字化时代,网络速度加快、存储容量增大,但在特定时间和预算内,需要移动、处理和存储的信息也更多。数据足迹缩减(DFR)技术应运而生,其重要性在于提高资源利用效率,满足服务需求。常见的DFR技术和方法包…

作者头像 李华
网站建设 2026/6/22 18:18:51

17、IT 领域的技术解析与服务洞察

IT 领域的技术解析与服务洞察 在当今数字化时代,数据的生成、处理和存储量达到了前所未有的高度。即使在经济危机期间,对数据处理、移动和存储的需求也在持续增长。因此,IT 组织需要在不增加成本和不影响服务交付的前提下,利用现有资源支持业务增长并提供新服务。以下将为…

作者头像 李华
网站建设 2026/6/23 10:27:34

卡顿监测原理

卡顿监测的核心是检测主线程是否被长时间阻塞,导致无法及时更新 UI。卡顿的本质帧率与刷新率iOS 屏幕刷新率:60Hz(ProMotion 120Hz)每帧理论时间:16.67ms(60Hz)或 8.33ms(120Hz&…

作者头像 李华
网站建设 2026/6/22 6:03:16

[创业之路-733]:CTO - 技术视野、商业理解力、领导力、团队间协作与沟通、团队管理:“技术的战略家 + 商业的合伙人 + 团队的教练”

作为首席技术官(CTO),其角色远不止技术专家,更是连接技术、商业与组织战略的关键枢纽。以下是针对CTO核心能力的详细解析:技术视野(Technical Vision)前瞻性判断:能够洞察行业技术趋…

作者头像 李华
网站建设 2026/6/22 7:59:58

手把手教你用大模型构建知识图谱:从零开始到实际应用的完整指南,小白也能秒变AI大神!

摘 要 针对档案编研成果开发利用不足的问题,提出融合领域本体与大模型的知识图谱构建框架,包含数据层、概念层、抽取层和图谱层,并以电力公司志为案例开展实证。通过文献调研与数据处理构建领域本体,选定大模型并设计提示词&#…

作者头像 李华