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

CTFSHOW-WEB入门-命令执行29-32

  1. 题目:web 29
    1. 题目:
    2. 解题思路:分析代码:
error_reporting(0);
if(isset($_GET['c'])){//get一个c的参数$c = $_GET['c'];//赋值给Cif(!preg_match("/flag/i", $c)){eval($c);//if  C变量里面没有flag,那么就执行C的php代码}}else{highlight_file(__FILE__);
}
3. 又因为ls 命令查看当前目录下的文件,cat命令可以查看文件内容,于是首先ls,在cat,由于过滤了flag,于是可以使用占位符*,代表一个或者多个任意字符:![](https://cdn.nlark.com/yuque/0/2025/png/39210681/1737520641889-74901bc4-59ac-434d-bff6-756a3d7e6bee.png)cat时发现啥也没有,于是查看源代码:![](https://cdn.nlark.com/yuque/0/2025/png/39210681/1737520695912-2b4adc20-da31-4ed1-9322-f3e2bb4630bc.png)
4. 知识点:eval()函数、system()函数
PHP 中,eval() 函数用于将字符串作为 PHP 代码执行。它可以动态地执行代码,但同样也带来了安全性和性能方面的风险。
语法
eval(string $code);
参数: $code 是要执行的 PHP 代码的字符串。
返回值: eval() 返回执行代码的结果。如果代码中没有返回值,则返回 NULLsystem() 函数是 PHP 中的一个内置函数,主要用于执行 shell 命令并直接输出结果到输出流。
语法
string system(string $command, int &$return_var = null);
参数:
$command: 要执行的 shell 命令(字符串)。
$return_var(可选):如果提供,该参数会被赋值为命令执行的返回状态码(整型)。
  1. 题目:web 30
    1. 题目:
    2. 解题思路:首先分析代码:
error_reporting(0);
if(isset($_GET['c'])){$c = $_GET['c'];//前面都和上一个题目差不多,下下面就不一样了if(!preg_match("/flag|system|php/i", $c)){eval($c);//这里过滤了flag system  php//那么就要考虑一下system的替代函数}}else{highlight_file(__FILE__);
}
3. 法一:shell_exec()![](https://cdn.nlark.com/yuque/0/2025/png/39210681/1737522032059-e2e23ef3-86f8-4bc9-abe0-7c1e5a3f509d.png)![](https://cdn.nlark.com/yuque/0/2025/png/39210681/1737522067949-f240f434-d89b-47f5-9f50-a991a29f1743.png)法二:exec():![](https://cdn.nlark.com/yuque/0/2025/png/39210681/1737522116551-d62389bd-f95a-4a69-ae77-4080ca116ccf.png)法三:passthru():![](https://cdn.nlark.com/yuque/0/2025/png/39210681/1737522171707-b88cd03e-67c4-4211-97b7-16193257df8b.png)
4. 知识点:system的替代函数:
PHP中,如果你想要执行系统命令而不直接使用system()函数,可以考虑以下几个替代方法:
1.shell_exec():这个函数用于执行整个外部命令并返回完整的输出结果。
$output = shell_exec('ls -l');
2.exec():类似于shell_exec(), 可以执行一个命令,并获取其输出,但它会替换掉当前脚本的所有输出。
$command = 'ls -l';
exec($command, $output, $return_var);
3.passthru():只适用于输出到终端,不会返回输出值,适合执行那些不需要结果的命令。
passthru('ping google.com');
4.proc_open():提供更大的控制力,允许创建进程管道,适用于复杂系统调用和数据交互。
$descriptorspec = array( 0 => array("pipe", "r"), 
// stdin is a pipe that the child will read from 1 => array("pipe", "w"), // stdout is a pipe that the child will write to 2 => array("pipe", "w") // stderr is a pipe that the child will write to );
$process = proc_open('/bin/ls', $descriptorspec, $pipes); // ... then you can communicate with the process through the pipes
  1. 题目:web 31
    1. 题目:
    2. 解题思路:分析题目代码,可以知道总共过滤了一下内容:flag system php sort shell . 空格 单引号,于是可以采用新加参数输入:也可以使用反字节符号配合echo,执行的效果类似于system,例如echo ls再利用tac加%20(空格)绕过空格和cat:(这里%20不行,可以用%09制表符)
    3. 知识点: 空格绕过,命令执行
  2. 题目:web 32
    1. 题目:
    2. 解题思路:看到题目发现过滤了很多东西 flag system PHP cat shell 句号 空格 单引号 反引号 echo 分号和 括号,那么需要使用括号的函数passthru()system()shell_exec()exec()都不行,反引号echo也不行,于是就得通过其他方法绕过,有个文件包含函数,尝试使用一下:c=include$_GET[“1”]?>&1=/var/log/nginx/access.log,由于是nginx服务器:可以考虑一下使用日志包含:将日志文件请求抓包后,修改ua头,改为命令:获得flag:也可以使用伪协议读取flag.php:获得php文件的base64编码:在解码就可以:得到flag:
    3. 知识点:php中不需要使用括号的函数:
1. includerequire
这两个函数用于包含和执行指定的文件。它们可以在没有括号的情况下使用:
include 'file.php'; // 可以不使用括号
require 'file.php'; // 可以不使用括号
2. echoprint
这两个语言结构用于输出内容。它们可以在没有括号的情况下使用:
echo 'Hello, World!'; // 可以不使用括号
print 'Hello, World!'; // 可以不使用括号
3. issetempty
这两个函数用于检查变量的状态。它们也可以在没有括号的情况下使用:
if isset($var) { // 可以不使用括号// 代码
}
if empty($var) { // 可以不使用括号// 代码
}
4. list
list 结构用于将数组中的值赋给变量。它可以在没有括号的情况下使用:
list($a, $b) = array(1, 2); // 需要括号,但可以在赋值时不使用
5. exitdie
这两个函数用于终止脚本的执行。它们可以在没有括号的情况下使用:
exit; // 可以不使用括号
die; // 可以不使用括号
4. 关于php中的分号有这样一个特殊情况:最后一个?>之前可以不用分号
分号
PHP用分号来分隔简单的语句。复合语句用大括号来标记代码块,如条件测试或循环,在大括号后面不要用分号。和其他语言不一样的是,在PHP中右括号(?>)前的分号不是必选的。

/

相关文章:

CTFSHOW-WEB入门-命令执行29-32

题目:web 29 题目:解题思路:分析代码: error_reporting(0); if(isset($_GET[c])){//get一个c的参数$c $_GET[c];//赋值给Cif(!preg_match("/flag/i", $c)){eval($c);//if C变量里面没有flag,那么就执行C…...

SQL Server 建立每日自动log备份的维护计划

SQLServer数据库可以使用维护计划完成数据库的自动备份,下面以在SQL Server 2012为例说明具体配置方法。 1.启动SQL Server Management Studio,在【对象资源管理器】窗格中选择数据库实例,然后依次选择【管理】→【维护计划】选项&#xff0…...

doris:HLL

HLL是用作模糊去重,在数据量大的情况性能优于 Count Distinct。HLL的导入需要结合hll_hash等函数来使用。更多文档参考HLL。 使用示例​ 第 1 步:准备数据​ 创建如下的 csv 文件:test_hll.csv 1001|koga 1002|nijg 1003|lojn 1004|lofn …...

双层Git管理项目,github托管显示正常

双层Git管理项目,github托管显示正常 背景 在写React项目时,使用Next.js,该项目默认由git托管。但是我有在项目代码外层记笔记的习惯,我就在外层使用了git托管。 目录如下 code 层内也有.git 文件,对其托管。 我没太在意&…...

准备知识——旋转机械的频率和振动基础

旋转频率,也称为转速或旋转速率(符号ν,小写希腊字母nu,也作n),是物体绕轴旋转的频率。其国际单位制单位是秒的倒数(s −1 );其他常见测量单位包括赫兹(Hz)、每秒周期数(cps) 和每分钟转数(rpm)…...

知识库管理驱动企业知识流动与工作协同创新模式

内容概要 知识库管理在现代企业中扮演着至关重要的角色,其价值不仅体现在知识的积累,还在于通过优质的信息流动促进协作与创新。有效的知识库能够将分散的信息整合为有序、易于访问的资源,为员工提供实时支持,进而提升整体工作效…...

CMake常用命令指南(CMakeList.txt)

CMakeList从入门到精通的文章有很多不再赘述( 此处附带一篇优秀的博文链接:一个简单例子,完全入门CMake语法与CMakeList编写 )。 本文主要列举 CMake 中常用命令的详细说明、优缺点分析以及推荐做法,以更好地理解和灵…...

【回溯+剪枝】找出所有子集的异或总和再求和 全排列Ⅱ

文章目录 1863. 找出所有子集的异或总和再求和解题思路:子集问题解法(回溯 剪枝)47. 全排列 II解题思路:排序 回溯 剪枝 1863. 找出所有子集的异或总和再求和 1863. 找出所有子集的异或总和再求和 一个数组的 异或总和 定义为…...

中国技术突破对国际格局的多维影响与回应

链接地址: https://download.csdn.net/download/wanggang130532/90323798https://download.csdn.net/download/wanggang130532/90323798...

【漫话机器学习系列】068.网格搜索(GridSearch)

网格搜索(Grid Search) 网格搜索(Grid Search)是一种用于优化机器学习模型超参数的技术。它通过系统地遍历给定的参数组合,找出使模型性能达到最优的参数配置。 网格搜索的核心思想 定义参数网格 创建一个包含超参数值…...

元宇宙下的Facebook:虚拟现实与社交的结合

随着科技的不断进步,虚拟现实(VR)技术逐渐从科幻走入现实,成为人们探索未来社交方式的重要工具。在这一浪潮中,Facebook(现为Meta)作为全球领先的社交平台,正在积极布局虚拟现实和元…...

记忆力训练day08

写作头脑风暴训练 1 集体的头脑风暴: 2 一个人的头脑风暴 没事,你说老师我还没有摸到门道,你去做,做的时候你就会知道什么叫做头脑风暴。记住,不要用脑子就在感觉里面,你究竟想给人呈现一种什么样的文章&am…...

崇州市街子古镇正月初一繁华剪影

今天是蛇年正月初一,下午笔者步出家门,逛到了崇州市街子古镇井水街,想看看景象如何。结果看到的是车水马龙、人流如织,繁花似锦,热闹非凡,原来今天开始预订此地摆下的长街宴。心里高兴,便用手机…...

websocket webworker教程及应用

WebSocket 和 Web Workers 是两种不同的 Web 技术,分别用于实现实时通信和后台线程处理。以下是它们的简要教程: WebSocket 教程 1. 什么是 WebSocket? WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。它允许服务器主动向客户端推…...

【后端】Flask

长期更新,建议关注收藏点赞! 实例1 Jinja2 是 Flask 和 Django 使用的 模板引擎,它允许你在 HTML 中嵌入 Python 代码,以动态生成页面内容。Jinja2 语法类似于 Django 模板,并支持变量、条件判断、循环、过滤器等。 fr…...

【cran Archive R包的安装方式】

cran Archive R包的安装方式 添加链接描述 1.包被cran移除 2.包要求的R语言版本与你电脑上的版本不相符 ad archive包的网址或者是下载到工作目录下,ad等于文件名 install,packages(ad repos NULL)...

如何用matlab画一条蛇

文章目录 源代码运行结果代码说明结果 源代码 % 画蛇的代码 % 2025-01-28/Ver1 % 清空环境 clc; clear; close all;% 定义蛇的身体坐标 t linspace(0, 4*pi, 100); % 参数化变量 x t; % x坐标 y sin(t) 0.5 * sin(3*t); % y坐标,形成更复…...

Greenplum临时表未清除导致库龄过高处理

1.问题 Greenplum集群segment后台日志报错 2.回收库龄 master上执行 vacuumdb -F -d cxy vacuumdb -F -d template1 vacuumdb -F -d rptdb 3.回收完成后检查 仍然发现segment还是有库龄报警警告信息发出 4.检查 4.1 在master上检查库年龄 SELECT datname, datfrozen…...

【Linux】gdb——Linux调试器

gdb使用背景 程序的发布方式有两种,debug模式和release模式 Linux gcc/g出来的二进制程序,默认是release模式 要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项 gdb使用方法 首先进入gdb gdb test_glist显示代码 断点 b 行…...

C++ 中用于控制输出格式的操纵符——setw 、setfill、setprecision、fixed

目录 四种操纵符简要介绍 setprecision基本用法 setfill的基本用法 fixed的基本用法 setw基本用法 以下是一些常见的用法和示例: 1. 设置字段宽度和填充字符 2. 设置字段宽度和对齐方式 3. 设置字段宽度和精度 4. 设置字段宽度和填充字符,结合…...

sqlserver 根据指定字符 解析拼接字符串

DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”

2025年#高考 将在近日拉开帷幕&#xff0c;#AI 监考一度冲上热搜。当AI深度融入高考&#xff0c;#时间同步 不再是辅助功能&#xff0c;而是决定AI监考系统成败的“生命线”。 AI亮相2025高考&#xff0c;40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕&#xff0c;江西、…...

深度学习习题2

1.如果增加神经网络的宽度&#xff0c;精确度会增加到一个特定阈值后&#xff0c;便开始降低。造成这一现象的可能原因是什么&#xff1f; A、即使增加卷积核的数量&#xff0c;只有少部分的核会被用作预测 B、当卷积核数量增加时&#xff0c;神经网络的预测能力会降低 C、当卷…...

C++使用 new 来创建动态数组

问题&#xff1a; 不能使用变量定义数组大小 原因&#xff1a; 这是因为数组在内存中是连续存储的&#xff0c;编译器需要在编译阶段就确定数组的大小&#xff0c;以便正确地分配内存空间。如果允许使用变量来定义数组的大小&#xff0c;那么编译器就无法在编译时确定数组的大…...

【Go语言基础【13】】函数、闭包、方法

文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数&#xff08;函数作为参数、返回值&#xff09; 三、匿名函数与闭包1. 匿名函数&#xff08;Lambda函…...

Vite中定义@软链接

在webpack中可以直接通过符号表示src路径&#xff0c;但是vite中默认不可以。 如何实现&#xff1a; vite中提供了resolve.alias&#xff1a;通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...

uniapp 小程序 学习(一)

利用Hbuilder 创建项目 运行到内置浏览器看效果 下载微信小程序 安装到Hbuilder 下载地址 &#xff1a;开发者工具默认安装 设置服务端口号 在Hbuilder中设置微信小程序 配置 找到运行设置&#xff0c;将微信开发者工具放入到Hbuilder中&#xff0c; 打开后出现 如下 bug 解…...

FFmpeg avformat_open_input函数分析

函数内部的总体流程如下&#xff1a; avformat_open_input 精简后的代码如下&#xff1a; int avformat_open_input(AVFormatContext **ps, const char *filename,ff_const59 AVInputFormat *fmt, AVDictionary **options) {AVFormatContext *s *ps;int i, ret 0;AVDictio…...

对象回调初步研究

_OBJECT_TYPE结构分析 在介绍什么是对象回调前&#xff0c;首先要熟悉下结构 以我们上篇线程回调介绍过的导出的PsProcessType 结构为例&#xff0c;用_OBJECT_TYPE这个结构来解析它&#xff0c;0x80处就是今天要介绍的回调链表&#xff0c;但是先不着急&#xff0c;先把目光…...

Win系统权限提升篇UAC绕过DLL劫持未引号路径可控服务全检项目

应用场景&#xff1a; 1、常规某个机器被钓鱼后门攻击后&#xff0c;我们需要做更高权限操作或权限维持等。 2、内网域中某个机器被钓鱼后门攻击后&#xff0c;我们需要对后续内网域做安全测试。 #Win10&11-BypassUAC自动提权-MSF&UACME 为了远程执行目标的exe或者b…...