Ctfshow web入门-web32 WP
拿到url,首先查看源码
过滤了以下字符串
flag|system|php|cat|sort|shell|.| |’|`|echo|;|(
过滤了空格可以用${IFS}
和%0a
代替,分号可以用?>代替
但是过滤了括号之后就不能用带有括号的函数,php中include是可以不带括号的函数,和web31一样,这里需要用文件包含
所以构造的Payload是
payload:http://url/?c=include%0a$_POST[1]?>
然后再POST某个文件名就可以查看文件了,比如下图,我传的参数是 1=/etc/passwd
有了这一步,接下来就是构造上传的参数1的值
php伪协议通常用于文件包含中,php中文件包含的函数有很多,比如 include include、require、include_once、require_once、highlight_file、show_source、file_get_contents、fopen、file、readfile
include
在包含文件的时候会执行,这也是为什么会有远程包含和本地包含漏洞的原因,有了文件包含的函数include
,接下来就可以执行php伪协议读取文件了
值1的payload:
php://filter/read=convert.base64-encode/resource=想要包含的文件名
这样文件包含出来的回显就是base64加密之后的
获取到加密的回显之后解码
除了上面的php为协议,也可以用data协议命令执行
Payload是
data:text/plain,php代码