【CTFWP】ctfshow-web32

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 题目介绍:
  • 题目分析:
  • payload:
  • payload解释:
  • flag


题目介绍:

<?php/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date:   2020-09-04 00:12:34
# @Last Modified by:   h1xa
# @Last Modified time: 2020-09-04 00:56:31
# @email: h1xa@ctfer.com
# @link: https://ctfer.com*/error_reporting(0);
if(isset($_GET['c'])){$c = $_GET['c'];if(!preg_match("/flag|system|php|cat|sort|shell|\.| |\'|\`|echo|\;|\(/i", $c)){eval($c);}}else{highlight_file(__FILE__);
}

题目分析:

这段代码是一个 PHP 脚本的一部分,是用于执行用户输入的代码片段。不过,它包含了一些安全漏洞,以下是对代码的分析和潜在问题:

  1. 错误报告关闭

    • error_reporting(0); 这一行关闭了错误报告,这会隐藏可能的错误信息,使得调试和发现问题变得更加困难。
  2. 用户输入处理

    • if(isset($_GET['c'])){ 检查是否接收到了 c 参数。
    • $c = $_GET['c']; 获取 c 参数的值。
  3. 正则表达式过滤

    • if(!preg_match("/flag|system|php|cat|sort|shell|\.| |\'|\|echo|;|(/i", $c)){` 使用正则表达式过滤一些关键词,防止执行一些危险的命令。然而,这个正则表达式并不完全有效,因为它没有考虑到一些其他的潜在危险字符或命令。
  4. 代码执行

    • eval($c); 执行传入的 PHP 代码。这是非常危险的,因为它可以执行任何 PHP 代码,包括恶意代码。
  5. 默认行为

    • else{ highlight_file(__FILE__); } 如果没有接收到 c 参数,脚本会显示当前文件的内容。

潜在问题:

  • 代码注入:由于使用了 eval(),任何有效的 PHP 代码都可以被执行。这可能导致严重的安全问题,如远程代码执行。
  • 过滤不充分:正则表达式过滤可能不够全面,无法阻止所有恶意输入。
  • 错误隐藏:关闭错误报告可能会隐藏一些关键的错误信息,使得问题更难被发现和解决。

payload:

?c=include$_GET[1]?>&1=data://text/plain,<?php system("tac flag.php")?>

payload解释:

这段代码尝试通过 URL 参数传递恶意代码来绕过原始 PHP 脚本中的安全检查。让我们逐步分析:

  1. 参数传递

    • ?c=include$_GET[1]?>&1=data://text/plain,<?php system("tac flag.php")?>
    • 这里使用了 include 语句,尝试将 $_GET[1] 作为文件名来包含。
  2. 原始脚本的正则表达式过滤

    • 原始脚本中的正则表达式尝试过滤掉一些关键词,但存在漏洞。它没有过滤掉 include 这样的关键词。
  3. eval 执行

    • 如果正则表达式匹配失败(即没有匹配到禁止的关键词),则执行 eval($c)

分析:

  • 原始脚本的正则表达式过滤没有考虑到 include 语句的使用,这使得攻击者可以通过构造特定的参数来绕过过滤。
  • 通过构造 ?c=include$_GET[1]?>&1=data://text/plain,<?php system("tac flag.php")?>,攻击者尝试执行 include 语句,从而绕过 eval 函数的限制。

具体步骤:

  1. 参数解析

    • $_GET['c'] 被设置为 include$_GET[1]?>
    • $_GET[1] 被设置为 data://text/plain,<?php system("tac flag.php")?>
  2. 执行

    • 脚本首先尝试执行 eval($_GET['c']),但由于 include 语句不在正则表达式的过滤范围内,它将执行 include $_GET[1]
  3. 文件包含

    • include $_GET[1] 将包含 data://text/plain,<?php system("tac flag.php")?>,这实际上是一个数据 URI,包含 PHP 代码。
  4. 系统命令执行

    • 包含的代码执行 system("tac flag.php"),这将执行系统命令 tac flag.php,可能会泄露或修改文件内容。

flag

在这里插入图片描述

flag=“ctfshow{eeeb78d3-831d-4a1b-bc6d-ff8d2d617768}”


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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

新版本异次元荔枝V4自动发卡系统源码

新版本异次元荔枝V4自动发卡系统源码&#xff0c;增加主站货源系统&#xff0c;支持分站自定义支付接口&#xff0c;目前插件大部分免费&#xff0c;UI页面全面更新&#xff0c;分站可支持对接其他分站产品&#xff0c;分站客服可自定义&#xff0c;支持限定优惠。 源码下载&a…

leetcode-98. 验证二叉搜索树

题目描述 给你一个二叉树的根节点 root &#xff0c;判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下&#xff1a; 节点的左 子树 只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。 示例 1&…

spring整合mybatis,junit纯注解开发(包括连接druid报错的所有解决方法)

目录 Spring整合mybatis开发步骤 第一步&#xff1a;创建我们的数据表 第二步&#xff1a;编写对应的实体类 第三步&#xff1a;在pom.xml中导入我们所需要的坐标 spring所依赖的坐标 mybatis所依赖的坐标 druid数据源坐标 数据库驱动依赖 第四步&#xff1a;编写SpringC…

LeetCode 125.验证回文串 C++写法

LeetCode 125.验证回文串 C写法 思路&#x1f914;&#xff1a; 我们不对字符串进行删除&#xff0c;这样效率太低了&#xff0c;所以可以左右开工&#xff0c;下标begin和end遇到不是字母数字字符的就跳过&#xff0c;当两边都是字母就进行比对&#xff0c;一样就继续往后走&a…

TeraTerm 使用技巧

参考资料 自分がよく使うTeratermマクロによる自動ログインのやり方をまとめてみたよTera Term マクロでログインを自動化してみたTera Term のススメ 目录 简介一. 常用基础设置1.1 语言变更1.2 log设置 二. 小技巧2.1 指定host别名2.2 新开窗口2.3 设置粘贴多行命令时的行间…

PostgreSQL 中如何处理数据的唯一性约束?

&#x1f345;关注博主&#x1f397;️ 带你畅游技术世界&#xff0c;不错过每一次成长机会&#xff01;&#x1f4da;领书&#xff1a;PostgreSQL 入门到精通.pdf 文章目录 PostgreSQL 中如何处理数据的唯一性约束&#xff1f;一、什么是唯一性约束二、为什么要设置唯一性约束…

【Elasticsearch】Elasticsearch 中的节点角色

Elasticsearch 中的节点角色 1.主节点&#xff08;master&#xff09;1.1 专用候选主节点&#xff08;dedicated master-eligible node&#xff09;1.2 仅投票主节点&#xff08;voting-only master-eligible node&#xff09; 2.数据节点&#xff08;data&#xff09;2.1 内容…

网站漏洞扫描软件Burp suite和Xray安装应用及联合使用

目录 1、网站漏洞扫描软件应用-Burp suite 01 burp 扫描工具使用介绍&#xff1a; 02 burp 扫描工具安装过程&#xff1a; 1&#xff09;获取扫描工具程序包 2&#xff09;安装部署扫描工具 3&#xff09;bp安装完毕的基础设置&#xff1a; 3.1&#xff09;抓取浏览器访…

【数据分享】2013-2022年我国省市县三级的逐年SO2数据(excel\shp格式\免费获取)

空气质量数据是在我们日常研究中经常使用的数据&#xff01;之前我们给大家分享了2000——2022年的省市县三级的逐年PM2.5数据和2013-2022年的省市县三级的逐年CO数据&#xff08;均可查看之前的文章获悉详情&#xff09;&#xff01; 本次我们分享的是我国2013——2022年的省…

3D建模软件--犀牛Rhino for Mac

Mac分享吧 文章目录 效果一、下载软件二、开始安装1、双击运行软件&#xff0c;将其从左侧拖入右侧文件夹中&#xff0c;等待安装完毕2、应用程序显示软件图标&#xff0c;表示安装成功 三、运行测试安装完成&#xff01;&#xff01;&#xff01; 效果 一、下载软件 下载软件…

dou dian滑块captchaBody

声明(lianxi a15018601872) 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 前言(lianxi a…

从数据湖到湖仓一体:统一数据架构演进之路

文章目录 一、前言二、什么是湖仓一体&#xff1f;起源概述 三、为什么要构建湖仓一体&#xff1f;1. 成本角度2. 技术角度 四、湖仓一体实践过程阶段一&#xff1a;摸索阶段(仓、湖并行建设)阶段二&#xff1a;发展阶段方式一、湖上建仓(湖在下、仓在上)方式二&#xff1a;仓外…

AIGC高频产品面试题(二)

什么叫大模型&#xff0c;人工智能大模型是什么&#xff1f; 之前&#xff0c;人工智能大多针对特定的场景应用进行训练&#xff0c;生成的模型难以迁移到其他场景&#xff0c;属于“小模型”的范畴。整个训练过程中&#xff0c;不仅手工调参工作量大&#xff0c;还需要给机器“…

SQL实战宝典:快速上手数据库查询与优化

文章目录 SQL 速成手册SQL 的主要功能1、基本查询语句2、表操作语句3、数据操作语句4、函数与聚合操作5、子查询与联接6、高级操作7、性能优化与安全性 基本查询语句表操作语句数据操作语句函数与聚合操作子查询与联接高级操作性能优化与安全性 SQL 速成手册 SQL&#xff08;S…

基于 Three.js 的 3D 模型加载优化

作者&#xff1a;来自 vivo 互联网前端团队- Su Ning 作为一个3D的项目&#xff0c;从用户打开页面到最终模型的渲染需要经过多个流程&#xff0c;加载的时间也会比普通的H5项目要更长一些&#xff0c;从而造成大量的用户流失。为了提升首屏加载的转化率&#xff0c;需要尽可能…

kotlin compose 实现应用内多语言切换(不重新打开App)

1. 示例图 2.具体实现 如何实现上述示例,且不需要重新打开App ①自定义 MainApplication 实现 Application ,定义两个变量: class MainApplication : Application() { object GlobalDpData { var language: String = "" var defaultLanguage: Strin…

ARM架构(一)—— ARMV8V9基础概念

目录 1.ARMCore的时间线2.ARM术语小结2.1 A64和arrch642.2ARM架构现在的5个系列2.3 微架构2.4 PE2.5 Banked2.6 ARM文档术语2.7 IMPLEMENTATION DEFINFD 和 DEPRECATED2.8 EL1t和EL1h 3 ARMv7的软件架构4 安全状态切换模型4.1 Secure state和Non-secure state介绍 5 Interproce…

Linux常用特殊符号

1、 > 和 >> 用法 这两个符号> 和 >> 主要区别如下&#xff1a; 符号>&#xff1a;覆盖现有文件&#xff0c;如果目录中不存在上述名称的文件&#xff0c;则创建一个文件。 符号>>&#xff1a;追加现有文件&#xff0c;如果目录中不存在上述名称的文…

Unity中UI系统3——UGUI

概述 基础知识 UGUI基础 六大基础组件 Canvas——渲染模式控制组件 Canvas Scaler —— 分辨率自适应组件 CanvasScaler——恒定像素模式 CanvasScaler——缩放模式 可以适当的自己去了解对数 CanvasScaler——恒定物理模式 CanvasScaler —— 3D模式 Graphic Raycaster——射线…