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的php代码}}else{highlight_file(__FILE__);
}
3. 又因为ls 命令查看当前目录下的文件,cat命令可以查看文件内容,于是首先ls,在cat,由于过滤了flag,于是可以使用占位符*,代表一个或者多个任意字符:cat时发现啥也没有,于是查看源代码:
4. 知识点:eval()函数、system()函数
在 PHP 中,eval() 函数用于将字符串作为 PHP 代码执行。它可以动态地执行代码,但同样也带来了安全性和性能方面的风险。
语法
eval(string $code);
参数: $code 是要执行的 PHP 代码的字符串。
返回值: eval() 返回执行代码的结果。如果代码中没有返回值,则返回 NULL。system() 函数是 PHP 中的一个内置函数,主要用于执行 shell 命令并直接输出结果到输出流。
语法
string system(string $command, int &$return_var = null);
参数:
$command: 要执行的 shell 命令(字符串)。
$return_var(可选):如果提供,该参数会被赋值为命令执行的返回状态码(整型)。
- 题目:web 30
- 题目:
- 解题思路:首先分析代码:
- 题目:
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()法二:exec():法三:passthru():
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
- 题目:web 31
- 题目:
- 解题思路:分析题目代码,可以知道总共过滤了一下内容:flag system php sort shell . 空格 单引号,于是可以采用新加参数输入:
也可以使用反字节符号配合echo,执行的效果类似于system,例如echo
ls
;再利用tac加%20(空格)绕过空格和cat:(这里%20不行,可以用%09制表符)
- 知识点: 空格绕过,命令执行
- 题目:
- 题目:web 32
- 题目:
- 解题思路:看到题目发现过滤了很多东西 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:
- 知识点:php中不需要使用括号的函数:
- 题目:
1. include 和 require
这两个函数用于包含和执行指定的文件。它们可以在没有括号的情况下使用:
include 'file.php'; // 可以不使用括号
require 'file.php'; // 可以不使用括号
2. echo 和 print
这两个语言结构用于输出内容。它们可以在没有括号的情况下使用:
echo 'Hello, World!'; // 可以不使用括号
print 'Hello, World!'; // 可以不使用括号
3. isset 和 empty
这两个函数用于检查变量的状态。它们也可以在没有括号的情况下使用:
if isset($var) { // 可以不使用括号// 代码
}
if empty($var) { // 可以不使用括号// 代码
}
4. list
list 结构用于将数组中的值赋给变量。它可以在没有括号的情况下使用:
list($a, $b) = array(1, 2); // 需要括号,但可以在赋值时不使用
5. exit 和 die
这两个函数用于终止脚本的执行。它们可以在没有括号的情况下使用:
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,在【对象资源管理器】窗格中选择数据库实例,然后依次选择【管理】→【维护计划】选项࿰…...
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. 设置字段宽度和填充字符,结合…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...
三体问题详解
从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...

自然语言处理——循环神经网络
自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM)…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...
重启Eureka集群中的节点,对已经注册的服务有什么影响
先看答案,如果正确地操作,重启Eureka集群中的节点,对已经注册的服务影响非常小,甚至可以做到无感知。 但如果操作不当,可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...
在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案
这个问题我看其他博主也写了,要么要会员、要么写的乱七八糟。这里我整理一下,把问题说清楚并且给出代码,拿去用就行,照着葫芦画瓢。 问题 在继承QWebEngineView后,重写mousePressEvent或event函数无法捕获鼠标按下事…...
【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案
目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后,迭代器会失效,因为顺序迭代器在内存中是连续存储的,元素删除后,后续元素会前移。 但一些场景中,我们又需要在执行删除操作…...