news 2026/5/1 11:21:39

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/5/1 6:04:14

3、云、虚拟化与数据存储网络基础全解析

云、虚拟化与数据存储网络基础全解析 1. 数据存储的重要性与挑战 在当今数字化时代,数据存储的重要性不言而喻。很多人常常认为数据存储理所当然,但实际上却并不真正理解它。当存储空间不足,无法保存文件或照片时,存储问题就会变得令人沮丧,而当急需的文件或文档找不到时…

作者头像 李华
网站建设 2026/5/1 3:45:01

代码不会骗人,但AI会!大模型幻觉的真相与解决方案,小白也能懂

在大模型时代,“幻觉”已经成为所有 AI 产品经理绕不开的话题。它影响模型可靠性、用户信任度,也直接决定产品能否落地。本文将让你在一次阅读中彻底理解幻觉的本质、成因及可落地的解决方案。Transformer 架构工作流程图 📌 一、什么是 AI 的…

作者头像 李华
网站建设 2026/5/1 3:45:28

Docker Offload的云端协同机制深度解析(资源调度黑科技曝光)

第一章:Docker Offload的云端协同机制深度解析(资源调度黑科技曝光)在现代边缘计算与云原生融合的背景下,Docker Offload 技术成为实现边缘设备与云端动态资源协同的关键路径。该机制通过智能调度策略,将边缘端高负载任…

作者头像 李华
网站建设 2026/5/1 3:45:22

现在2025年开始学网络安全的真实情况是什么?还好就业吗?

安全现在是大趋势,说是铁饭碗也不为过,就业前景好,方向多比传统计算机行业就业舒服点。但是大厂依然是985,211的天下,是双非能进大厂的,只是凤毛麟角。前提是你的能力可以让公司忽略你的学历。 IT行业一直都…

作者头像 李华
网站建设 2026/5/1 4:46:15

QuickBI报表开发流程详解

一、QuickBI报表开发全流程 核心开发流程 数据准备 → 数据源连接 → 数据集构建 → 数据建模 → 可视化设计 → 仪表板制作 → 发布共享二、详细步骤及示例说明 示例背景 假设我们需要分析某电商公司的销售数据,制作一个销售监控仪表板。 步骤1:数据…

作者头像 李华