Upload-labs

所有文章和随笔(随笔将不于csdn更新)将于我的个人博客(移动端暂未适配)第一时间更新。

一些网站存在文件上传接口,一旦存在这个接口就有可能存在漏洞。
文件上传漏洞的逻辑是将一个webshell上传到服务器,服务器对它进行本地化存储并解析。
那么我们只要获知上传文件的路径就可以对整个网站甚至是服务器进行控制。

本次实验使用的靶场环境是Upload labs, github项目地址
环境:php 5.2.17

Pass-1

我们直接上传一个phpinfo测试一下,发现立刻就显示如下信息

该文件不允许上传,请上传.jpg|.png|.gif类型的文件,当前文件类型为:.php

怀疑是js拦截。将js禁用后成功上传
成功访问

Pass-2

仍然上传一个.php的webshell提示文件类型不正确,使用burp抓包并修改文件类型

-application/octet-stream
+image/jpeg

Pass-3

waf拦截提示

不允许上传.asp,.aspx,.php,.jsp后缀文件!

抓包尝试修改后缀为php3,php4,php5,pht,phtm,phtml绕过

Pass-4

测试后发现仅提示此文件不允许上传,并且修改后缀、修改文件类型均无效
上传.htaccess文件并写入如下内容

<FilesMatch "haha">
SetHandler application/x-httpd-php
</FilesMatch>

然后在上传一个带有"haha"字样的任意后缀的webshell即可

.htaccess文件是php的解析文件,根据文件写的规则,会把相应的东西当作php来执行
此题中所有文件名中包含“haha”字样(后缀)的文件都当作php来执行

Pass-5

本题旨在让我们使用文件包含配合文件上传进行一个配合攻击
原理图如下:

因此我们可以抓包并修改后缀为jpg,利用文件包含将其以php执行

http://localhost/include.php?file=./upload/haha.jpg

Pass-6

由于此靶场是搭建与windows上,而windows对于后缀大小写不敏感,linux对大小写敏感
可以直接抓包修改后驻为phP绕过

Pass-7

此题提示为“禁止上传所有可解析的后缀”,又根据windows特性,后缀后的空格不解析,因此直接抓包修改后缀加空格绕过。

Pass-8

后缀加.绕过

Pass-9

::$DATA是windows的NTFS文件系统中的默认属性

上传xxx.php::$DATA
意思是让windows请求自己

Pass-10

可以使用burp抓包,第一次上传文件名xxx.php:.jpg
此时会生成一个空的xxx.php文件
第二次上传文件名xxx.>>>
此时会在空文件中写入你的代码

Upload-labs通关指南(上) 1-10的更多相关文章

  1. SUCTF 2019 Upload labs 2 踩坑记录

    SUCTF 2019 Upload labs 2 踩坑记录 题目地址 : https://github.com/team-su/SUCTF-2019/tree/master/Web/Upload La ...

  2. 【原创】高性能网络编程(二):上一个10年,著名的C10K并发连接问题

    1.前言 对于高性能即时通讯技术(或者说互联网编程)比较关注的开发者,对C10K问题(即单机1万个并发连接问题)应该都有所了解."C10K"概念最早由Dan Kegel发布于其个人 ...

  3. python小练习,打出1-100之间的所有偶数,设计一个函数,在桌面上创建10个文件,并以数字命名,复利计算函数

    练习一:打出1-100之间的所有偶数 def even_print(): for i in range(1,101): if i % 2 == 0: print (i) even_print() #列 ...

  4. WordPress NextGEN Gallery ‘upload.php’任意文件上传漏洞

    漏洞名称: WordPress NextGEN Gallery ‘upload.php’任意文件上传漏洞 CNNVD编号: CNNVD-201306-259 发布时间: 2013-06-20 更新时间 ...

  5. python小练习1:设计这样一个函数,在桌面的文件夹上创建10个文本,以数字给它们命名。

    python小练习1:设计这样一个函数,在桌面的文件夹上创建10个文本,以数字给它们命名. 使用for循环即可实现: for name in range(1,11): desktop_path='C: ...

  6. 编写一个程序,开启 3 个线程,这三个线程的 ID 分别为 A、B、C,每个线程将自己的 ID 在屏幕上打印 10 遍,要求输出的结果必须按顺序显示。如:ABCABCABC…… 依次递归

    import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; import java.uti ...

  7. RabbitMQ-Java客户端API指南-上

    RabbitMQ-Java客户端API指南-上 客户端API严格按照AMQP 0-9-1协议规范进行建模,并提供了易于使用的附加抽象. RabbitMQ Java客户端使用com.rabbitmq.c ...

  8. 看KubeEdge携手K8S,如何管理中国高速公路上的10万边缘节点

    摘要:为保证高速公路上门架系统的落地项目的成功落地,选择K8s和KubeEdge来进行整体的应用和边缘节点管理. 一.项目背景 本项目是在高速公路ETC联网和推动取消省界收费站的大前提下,门架系统的落 ...

  9. 《Advanced Bash-Scripting Guide》 in Chinese 高级Bash脚本编程指南》Revision 10中文版

    <Advanced Bash-Scripting Guide> in Chinese <高级Bash脚本编程指南>Revision 10中文版 在线阅读链接:http://ww ...

随机推荐

  1. Linux从头学10:三级跳过程详解-从 bootloader 到 操作系统,再到应用程序

    作 者:道哥,10+年的嵌入式开发老兵. 公众号:[IOT物联网小镇],专注于:C/C++.Linux操作系统.应用程序设计.物联网.单片机和嵌入式开发等领域. 公众号回复[书籍],获取 Linux. ...

  2. Centos8.3安装broadcom(博通)BCM43142无线网卡驱动,Centos8没有wifi选项(No wifi adapter found centos)解决办法

    参考:杆菌大祭司> https://www.jianshu.com/p/3cb41b7b8fec 第一步:查看网卡型号,确认无线网卡型号为BCMXXX lspci | grep Network ...

  3. 15-SpringCloud Stream

    Stream是什么及Binder介绍 官方文档1 官方文档2 Cloud Stream中文指导手册 什么是Spring Cloud Stream? 官方定义Spring Cloud Stream是一个 ...

  4. vue页面跳转以及传参和取参

    vue中this.$router.push()路由传值和获取的两种常见方法 1.路由传值   this.$router.push() (1) 想要导航到不同的URL,使用router.push()方法 ...

  5. python库--requests

    requests 方法 返回 参数 方法详情 .get()  r  url  get请求 params  url?后面的内容会以'key=value'的方式接到url后面 proxies 设置代理ip ...

  6. Weblogic漏洞分析之JNDI注入-CVE-2020-14645

    Weblogic漏洞分析之JNDI注入-CVE-2020-14645 Oracle七月发布的安全更新中,包含了一个Weblogic的反序列化RCE漏洞,编号CVE-2020-14645,CVS评分9. ...

  7. 自定义组件 v-model 的使用

    关于自定义组件如何使用 v-model,本章直讲如何使用: 一. $emit('input', params) // 父组件中 <template> <article> {{f ...

  8. RabbitMQ-TTL-死信队列_DLX

    1. 简介 死信队列,简称:DLX,Dead Letter Exchange(死信交换机),当消息成为Dead message后,可以被重新发送到另外一个交换机,这个交换机就是DLX. (一般会将DL ...

  9. MSSQL2008 无法分配空间,因为PRIMARY文件组已满

    1.收缩数据库日志 https://jingyan.baidu.com/article/1709ad808a279f4635c4f060.html 完整代码: --查看数据库的存放位置-- selec ...

  10. 一文搞懂如何使用Node.js进行TCP网络通信

    摘要: 网络是通信互联的基础,Node.js提供了net.http.dgram等模块,分别用来实现TCP.HTTP.UDP的通信,本文主要对使用Node.js的TCP通信部份进行实践记录. 本文分享自 ...