CTFHUB RCE——文件包含

 1.文件包含

 首先我们开启题目

 看到的是一大串代码

 我们仔细看一下php代码,重点是

if (!strpos($_GET["file"], "flag")) {
        include $_GET["file"];

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

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

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

否则就输出Hacker。

再看一眼shell

 是将ctfhub传的参数用php执行

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

?file=shell.txt

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

 接着返回上一级目录,发现flag,接下来打开flag

 找到Flag。

2.php://input

首先进入题目也是先看代码

代码中说如果file 名中六个字符是 “php://” 就执行后面的include函数

这里其实就应该想到的是php://伪协议

php://filterphp://inputphp://filter用于读取源码php://input用于执行php代码

而执行php://input伪协议条件是allow_url_include是On

 

那么我们就开始做题

直接构造file的值为php://input

post参数为<?php system("ls")?>

因为php://input是执行后面的PHP命令所以要写成php代码形式

可以显示出网站的文件

接着返回上一级文件

 找到flag后,cat

 

找到flag

3.读取源代码

首先进入题目看代码

 首先file的前六个字母要是php://

而且也没有木马文件可以用,但是它说flag在 /flag当中

那么我们就用到了php://filter伪协议,它用来用于读取源码

php://filter 参数描述
resource=<要过滤的数据流>必须项。它指定了你要筛选过滤的数据流。
read=<读链的过滤器>可选项。可以设定一个或多个过滤器名称,以管道符(*\*)分隔。
write=<写链的过滤器>可选项。可以设定一个或多个过滤器名称,以管道符(\)分隔。
<; 两个链的过滤器>任何没有以 read=write= 作前缀的筛选器列表会视情况应用于读或写链。

比如php://filter/resource=[文件名]读取文件源码

而它说flag在 /flag当中那么我们直接?file=php://filter/resource=/flag

得到flag

4.远程包含

进入题目

 就说了file当中不能有flag

PHPinfo当中也表明php://input可以用

 那么就和php://input一样了直接找出flag

 

  • 10
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值