web-文件上传和upload-labs靶场通关

目录

前端过滤

uploads-lab-1:

后端验证

upload-labs-2:mime验证

upload-labs-3:黑名单绕过

upload-labs-4:黑名单绕过-.htaccess(这里得用旧版的phpstudy,新版的不行)

upload-labs-5:后缀名绕过

upload-labs-6:大小写绕过

upload-labs-7:后缀名加空格绕过

upload-labs-8:后缀名加点绕过

upload-labs-9:文件流或者空格点

upload-labs-10:双写绕过或者点空格点绕过

upload-labs-11:双写绕过

upload-labs-12:截断符%00绕过

upload-labs-13:文件包含、文件头检验

upload-labs-14

upload-labs-15:exif_imagetype()判断图像的类型

连接

知识点:

一句话木马


-----------------------
  webshell利用工具:
-----------------------
蚁剑:
    https://github.com/AntSwordProject/AntSword-Loader
    https://github.com/AntSwordProject/antSword
冰蝎:
    https://github.com/rebeyond/Behinder
哥斯拉:
    https://github.com/BeichenDream/Godzilla

文件上传靶场:
    https://github.com/c0ny1/upload-labs

 

前端过滤

绕过前端验证

①关闭js

②通过bp抓包修改文件的后缀名

uploads-lab-1:

可以看到页面有一个弹窗,弹窗就联想到是前端的js代码的alert,判断他是js进行验证。

 关闭js之后,文件上传成功

打开之后就可以看到我们的phpinfo()

后端验证

知识点:

1.通过php对文件进行验证

2.Content-Type(MediaType),即是Internet Media Type,互联网媒体类型,也叫做MIME类型。

3.上传.htaccess文件,可以帮我们实现:网页重定向,定义404错误,改变文件扩展名,运行/阻止特定用户访问某目录或者文件,配置默认文档。运行一个的时候,他会先去检测一下有没有.htaccess这个文件。如果有的话,就会先去访问这个.htacess文件,然后查看.htacess标签中是否存在我们要访问的文件。比如说在.htacess文件的标签中有04.jpg文件,他就会把文件的mime类型先转化为指定类型,然后再去执行。

4.文件流是指在计算机中读取或者写入文件的过程,data是默认方式

.htaccess内容为:
    <FilesMatch "04.jpg">
    SetHandler application/x-httpd-php
    </FilesMatch>

application/x-httpd-php:php的mime类型

防御:

        ①二次渲染。对图片进行加工处理,比如对你上传的图片在进行一次截图

        ②重命名。对上传的文件图片重命名,方法之你访问你上传的图片

绕过:

①抓包修改文件的mime类型

②使用 php3,php4,php5,phtml,phps 等拓展名绕过,他们都是可以被当成普通的php函数进行识别的。

③修改文件的后缀名。在windows系统中,要是后缀名后面加上了一个点或者空格的话,就是会默认帮你删除掉的,这事windows中特有的。在文件上传的时候,可以在后面加上 点和空格 来实行绕过

④Windows文件流特性绕过,文件名后缀名改成09.php::$DATA。  php::$DATA

⑤大小写绕过

⑥双写绕过(后缀名直接被删除掉 )

⑦截断符%00的运用。上传路径名%00截断绕过。上传的文件名写成1.jpg, save_path改成../upload/1.php%00,最后保存下来的文件就是1.php。

upload-labs-2:mime验证

这里和第一关不一样的提示,不是弹窗,有可能是后端验证

将Content-Type的内容改为:image/png,文件上床成功

 upload-labs-3:黑名单绕过

upload-labs-4:黑名单绕过-.htaccess(这里得用旧版的phpstudy,新版的不行)

编辑并且上床.htaccess文件

<FilesMatch "1.jpg">SetHandler application/x-httpd-php
</FilesMatch>

然后再上传1.jpg文件就可以了。可以看到后后缀名为jpg的文件解析成立php

upload-labs-5:后缀名绕过

在文件后缀名后面加上  点空格点,就可以了。

upload-labs-6:大小写绕过

upload-labs-7:后缀名加空格绕过

upload-labs-8:后缀名加点绕过

upload-labs-9:文件流或者空格点

①文件流绕过(就是后缀名绕过)

phpinfo.php::$data

②用点空格点绕过

upload-labs-10:双写绕过或者点空格点绕过

①双写绕过

②点空格点绕过

upload-labs-11:双写绕过

直接上传普通的php文件发现可以上传,点开图片链接,发现php被删除掉了。看到被删除,第一反应双写绕过

upload-labs-12:截断符%00绕过

直接在upload的path中写上php后缀的文件名加上截断符,上传的路径会拼接成/upload/1.php%00/1.jpg。但是此时由于截断符的存在,他会把后面的数据都截断掉,所以就会只剩下1.php。识别文件名的时候就是识别出文件名为1.php,然后包的请求体的内容自然也就会写在了1.php中。

 

upload-labs-13:文件包含、文件头检验

①就是把截断符改成hex编码进行绕过,再1.php后面加上hex00

注意:

使用POST传地址,POST不会对里面的数据自动解码,需要使用hex(十六进制编码)加上00截断。因此在本关不可以使用%00,需要使用00。

②上传图片马

图片马的生成

copy normal.jpg /b + shell.php /a webshell.jpg

文件包含访问路径

http://127.0.0.1:82/include.php/?file=upload/2020230726052227.jpg

 ③修改文件头

http://127.0.0.1:82/include.php/?file=upload/5720230726053046.gif

 

upload-labs-14

        本关使用了getimagesize()函数,尝试读取上传文件(图片)的大小,如果该函数能够成功读取上传文件的大小,就说明该文件是一个图片;如果不能成功读取,那么就说明该文件不是一张图片,是一个恶意文件。

有bug正常的图片也不行

upload-labs-15:exif_imagetype()判断图像的类型

①图片马

 ②gif文件头

 

连接

知识点:

①eval() 函数把字符串按照 PHP 代码来计算。该字符串必须是合法的 PHP 代码,且必须以分号

②·system() 输出并返回最后一行shell结果。可以将字符串执行成cmd的命令

③@:抑制报错,如果报错不会回显到前端

关于shell和webshell

shell实际上指的是一个接受由键盘输入的命令并将其传递给操作系统来执行的程序
Webshell:Webshell是黑客经常使用的一种恶意脚本,其目的是获得对服务器的执行操作权限,比如执行系统命令、窃取用户数据、删除web页面、修改主页等,其危害不言而喻。黑客通常利用常见的漏洞,如SQL注入、远程文件包含(RFI)、FTP,甚至使用跨站点脚本攻击(XSS)等方式作为社会工程攻击的一部分,最终达到控制网站服务器的目的。

一句话木马

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

①用get post request都可以,看后端用哪种方式来接收。有一些网站get是不行的

②post里面用来接收前端传递过来的参数,eval把传递过来的参数变成cmd命令执行

 

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

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

相关文章

Android Ble蓝牙App(一)扫描

Ble蓝牙App&#xff08;一&#xff09;扫描 前言正文一、基本配置二、扫描准备三、扫描页面① 增加UI布局② 点击监听③ 扫描处理④ 广播处理 四、权限处理五、扫描结果① 列表适配器② 扫描结果处理③ 接收结果 六、源码 前言 关于低功耗的蓝牙介绍我已经做过很多了&#xff0…

form-data 提交文件请求远程调用

文件请求方法 /*** 上传图文消息内的图片 获取url* 富文本内的图片** param file*/public static String uploadMediaGetUrl(File file) throws IOException {if (!file.exists()) {return null;}String responseData null;try {String url "http://localhost:8503/fil…

Linux NUMA架构(非统一内存访问)

NUMA架构 NUMA Architecture| Non Uniform Memory Access Policy/Model | Numa Node Configuration (CPU Affinity) NUMA架构产生的原因 cpu的高速处理功能和内存存储直接的速度会严重影响cpu的性能。传统的计算机单核架构,cpu通过内存总线(内存访问控制器)直接连接到一…

全网最全讲的最详细的多线程原理

在我们开始讲多线程之前&#xff0c;我们先来了解一下什么是进程&#xff0c;什么是线程。进程和线程是操作系统中两个容易混淆的概念。 进程 在Windows操作系统中打开任务管理器&#xff0c;可以查看进程和线程的详细信息。也可以使用专业的进程查看小软件——Process Explo…

javascript实现几何粒子星空连线背景效果

javascript实现几何粒子星空连线背景效果 <html><head><meta charset"UTF-8"><title>几何星空连线背景</title><script src"./ParticleBackground.js"></script> </head><body><canvas id"…

Linux进程调度

初探Linux进程调度 已知&#xff1a;父进程创建子进程后&#xff0c;父子进程同时运行。 问题&#xff1a;如果计算机只有一个处理器&#xff0c;父子进程以什么方式同时执行&#xff1f; 基本概念 运行&#xff1a;一个可执行程序从文件&#xff0c;变成进程的过程。 执行…

MySQL碎片清理

为什么产生&#xff1f; 经过大量增删改的表&#xff0c;都可能存在碎片 MySQL数据结构是B树&#xff0c; 删除某一记录&#xff0c;只会标记为删除&#xff0c;后续插入一条该区间的记录&#xff0c;就会复用这个位置。 删除整个数据页的记录&#xff0c;则整个页标记为“可…

微软对Visual Studio 17.7 Preview 4进行版本更新,新插件管理器亮相

近期微软发布了Visual Studio 17.7 Preview 4版本&#xff0c;而在这个版本当中&#xff0c;全新设计的扩展插件管理器将亮相&#xff0c;并且可以让用户可更简单地安装和管理扩展插件。 据了解&#xff0c;目前用户可以从 Visual Studio Marketplace 下载各式各样的 VS 扩展插…

常用的CSS渐变样式

边框渐变 方案1&#xff1a; 边框渐变( 支持圆角) width: 726px;height: 144px;border-radius: 24px;border: 5px solid transparent;background-clip: padding-box, border-box; background-origin: padding-box, border-box; background-image: linear-gradient(to right, #f…

HTML+CSS前端 简易用户登录界面

Day1 刚学了一些html和css的简单语法&#xff0c;尝试写一个非常简易的静态用户登录界面。 login_simple.html <!DOCTYPE html> <html lang"en"><head><meta name"viewport" content"widthdevice-width,initial-scale1.0"…

opencv中轮廓相关属性

一、介绍 findContours() &#xff1a;The function retrieves contours from the binary image。 二、代码 void main() {Mat src imread("match00.bmp", IMREAD_GRAYSCALE);Mat mask;threshold(src, mask, 128, 255, cv::THRESH_BINARY_INV);Mat element cv::g…

6门新兴语言,小众亦强大

编码语言在塑造我们创建软件的方式方面起着至关重要的作用。多年来&#xff0c;我们观察到Python&#xff0c;Java和C等成熟语言的流行。然而&#xff0c;如今一波新的编码语言浪潮已经出现&#xff0c;提出了创造性的解决方案&#xff0c;并推动了软件工程领域所能完成的极限。…

Cesium 实战 - Blender调整模型组件原点,实现直升机尾翼旋转

Cesium 实战 - Blender调整模型组件原点&#xff0c;实现直升机尾翼旋转 1.模型原点问题2.导入模型&#xff08;zhisheng.glb&#xff09;3.导出模型4. 通过 czml 调试代码 某个项目需求&#xff0c;在操作直升机模型的时候&#xff0c;希望直升机机翼和尾翼旋转起来。 机翼旋…

适配器模式——不兼容结构的协调

1、简介 1.1、概述 有的笔记本电脑的工作电压是20V&#xff0c;而我国的家庭用电是220V&#xff0c;如何让20V的笔记本电脑能够在220V的电压下工作&#xff1f;答案是引入一个电源适配器&#xff08;AC Adapter&#xff09;&#xff0c;俗称充电器&#xff0f;变压器。有了这…

Qt 2. QSerialPortInfo显示串口信息

在ex2.pro 添加&#xff1a; QT serialport//main.cpp #include "ex2.h" #include <QtSerialPort/QtSerialPort> #include <QApplication>int main(int argc, char *argv[]) {QApplication a(argc, argv);Ex2 w;w.show();QList<QSerialPortInfo>…

xrdp登录显示白屏且红色叉

如上图所示&#xff0c;xrdp登录出现了红色叉加白屏&#xff0c;这是因为不正常关闭导致&#xff0c;解决方法其实挺简单的 #进入/usr/tmp cd /usr/tmp #删除对应用户的kdecache-** 文件&#xff08;我这里使用的是kde桌面&#xff09;&#xff0c;例如删除ywj用户对应的文件 …

Django学习记录:初步认识django以及实现了简单的网页登录页面的前后端开发

Django学习记录&#xff1a;初步认识django以及实现了简单的网页登录页面的前后端开发 1、可以先删去template文件夹&#xff0c;并在setting里面删掉这一行 2、在pycharm中创建app&#xff1a; 3、启动app&#xff1a;编写URL与视图函数关系【urls.py】 ​ 编写视图函数【vi…

RabbitMQ 教程 | 第5章 RabbitMQ 管理

&#x1f468;&#x1f3fb;‍&#x1f4bb; 热爱摄影的程序员 &#x1f468;&#x1f3fb;‍&#x1f3a8; 喜欢编码的设计师 &#x1f9d5;&#x1f3fb; 擅长设计的剪辑师 &#x1f9d1;&#x1f3fb;‍&#x1f3eb; 一位高冷无情的编码爱好者 大家好&#xff0c;我是 DevO…

SpringCloud学习路线(13)——分布式搜索ElasticSeach集群

前言 单机ES做数据存储&#xff0c;必然面临两个问题&#xff1a;海量数据的存储&#xff0c;单点故障。 如何解决这两个问题&#xff1f; 海量数据的存储问题&#xff1a; 将索引库从逻辑上拆分为N个分片&#xff08;shard&#xff09;&#xff0c;存储到多个节点。单点故障…

Mysql 查询统计最近12个月的数据

包括当月: SELECTt1.yf AS month,count( t2.uuid ) AS total FROM(SELECTDATE_FORMAT(( CURDATE()), %Y-%m ) AS yf UNIONSELECTDATE_FORMAT(( CURDATE() - INTERVAL 1 MONTH ), %Y-%m ) AS yf UNIONSELECTDATE_FORMAT(( CURDATE() - INTERVAL 2 MONTH ), %Y-%m ) AS yf UNION…