一、靶场简介

upload-labs是一个使用php语言编写的,专门收集渗透测试和CTF中遇到的各种上传漏洞的靶场。旨在帮助大家对上传漏洞有一个全面的了解。目前一共20关,每一关都包含着不同上传方式。

  • 靶场安装

由于upload-labs 是一个由php 语言编写的靶场,因此需要在php环境下进行使用。我这里推荐用phpstudy集成环境。

靶场项目地址:GitHub - c0ny1/upload-labs: 一个想帮你总结所有类型的上传漏洞的靶场

将源码下载下来之后,在www目录里面新建一个文件夹来存放。

然后直接在浏览器打开即可

本文先详细讲解一下第一关,后续文章中有些相关操作就会一笔带过了。

Pass-01

我们打开第一关可以看到一个上传点

既然说了选择上传的图片,那么我们先上传一张正常的图片试试。这里我准备了一张测试用图

直接选中

然后点击上传

上传成功后不仅页面会有显示,在网站目录的upload文件夹下也会多出来刚刚上传的图片

正常图片可以上传,那么我们直接上传一句话木马试试(一句话木马的相关知识请自行了解)

图中文件就是php一句话,点击上传却发现无法上传

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

无法直接上传shell,那么肯定是有检测手段咯,查看提示我们可以知道,第一关是用的js前端校验

既然是js前端校验,那么我们就来看看源代码,瞅瞅js都做了什么

可以看到js定义了一个白名单,只允许上传.jpg|.png|.gif格式的文件,并且对上传文件的后缀名同白名单做了对比校验。


对于js校验,我了解的有三种方式可以进行绕过
  1. 删除js校验代码
  2. 更改js校验中的白名单
  3. 先改文件后缀名通过js校验再抓包更改后缀上传至服务器


下面对三种方式进行详细的讲解

  1. 删除js校验代码

我们既然知道了是什么在阻止我们上传shell,那么干掉它不就可以了吗?

通过审查元素我们可以发现上传这里是调用了checkFile函数的,那么我们先找到这个函数(肯定是在script标签里,不要问为什么)

往下翻我们在最后一个标签中看到了这个函数,接下来就是对它的校验功能进行删除了

删除之后在进行上传发现成功了。

二、更改js校验中的白名单

同样是对js代码进行操作,只不过不同于上面的直接删除,这里是在js校验的白名单中把php文件格式添加上

修改之后同样可以绕过js检测。

  • 先改文件后缀名通过js校验再抓包更改后缀上传至服务器

这种方式稍微复杂一点,对小白选手来说,我尽量写得详细些。

这里值得说一下的是,我们的浏览器在向服务器请求带有上传点的这个页面,并且服务器返回了页面内容之后,它们之间的连接就断开了。js检测完全就是浏览器本地的行为。当选择的文件在浏览器检测允许上传之后才会上传至服务器,如果检测不通过不会和服务器有任何的数据交互。

第三种方法就是先把shell的后缀名修改为浏览器js校验允许的类型

这里我修改成了png格式。然后对浏览器进行抓包分析。点击上传按钮之后浏览器会先进行js校验,通过后才会将数据发向服务器

因为shell的后缀名是修改为了png格式的,所以可以通过检测,这里抓到的数据包可以看到浏览器向服务器上传的的文件后缀还是png格式,我们只需将它改为php格式的,就可以将shell成功上传到服务器

upload-labs之第一关相关推荐

  1. (白帽子学习笔记)前渗透——文件上传upload labs

    读者需知 1.本文仅供学习使用,由于传播和利用此文所造成的损失均由使用者本人负责,文章作者不为此承担责任 2.本文参考了一些文章,如有侵权请联系本人删除 第一关--前端验证 1.将浏览器中的JS代码禁 ...

  2. Python游戏开发:最强大脑第一关,数字华容道

    前言 freegames是Apache2许可的Python游戏集合,旨在用于教育和娱乐,完全是开源的,我们只要引用编写就好,当前在最强大脑的舞台上的第一关就是数字华容道,好多人都栽在了上面,如果你也想 ...

  3. SQL注入之时间盲注 和 报错注入(sql-lab第一关为例)

    什么是时间盲注 时间盲注指通过页面执行的时间来判断数据内容的注入方式,通常用于数据(包含逻辑型)不能返回到页面中的场景,无法利用页面回显判断数据内容,只能通过执行的时间来获取数据. 时间盲注的过程 1 ...

  4. SQL注入之union联合注入——sql-lab第一关(非常非常详细的过程)

    SQL注入介绍 什么是SQL注入: SQL注入是(SQLi)是一种注入攻击,可以执行恶意的SQL语句,它通过将任意SQL代码插入数据库查询,使攻击者能够完全控制web应用程序后面的数据库服务器.攻击者 ...

  5. qt 3d迷宫游戏_Steam上最硬核的恐怖游戏?玩家耗时一个月才通第一关!

    说到恐怖游戏,游戏日报漆木第一时间想到的便是<逃生>系列.<层层恐惧>.<寂静岭>等.他们的共同特点无非就是恐怖,但难度都比较适中,主要体现在解密方面.而今天为大家 ...

  6. 开源啦:连DeepMind也捉急的游戏,OpenAI给你攻破第一关的高分算法

    圆栗子 发自 凹非寺  量子位 出品 | 公众号 QbitAI 写作"很好奇",读作"不怕死". △ 佛系操作 打游戏的时候,有些平淡的操作,还没执行就看得到结 ...

  7. Educoder Basemap和Seaborn 第一关:Seaborn

    第一关:Seaborn 任务描述 本关任务:编写一个绘制每个月销售总额的折线图. 相关知识 为了完成本关任务,你需要掌握:1.matplotlib的缺点,2.如何使用seaborn进行可视化,并设置整 ...

  8. Educoder Matplotlib和Seaborn 三维图 第一关绘制三维图

    第一关 绘制三维图 任务描述 相关知识 matplotlib画三维图 线框图和曲面图 编程要求 测试说明 任务描述 本关任务:使用matplotlib绘制三维图. 相关知识 matplotlib原本只 ...

  9. 疑问点sqlilibs 第一关

    疑问点sqlilibs 第一关的注入时我发现了这样的问题 http://192.168.59.130/sqlilabs/Less-1/?id=-1%27%20union%20select%201,2, ...

最新文章

  1. 人工智能第一股“旷视科技”赴港递交IPO材料 半年亏损52亿估值280亿
  2. 《PHP和MySQL Web开发从新手到高手(第5版)》一1.7 万事俱备,摩拳擦掌
  3. uni-app 微信小程序使用 web-view 预览PDF
  4. css设置 ul的内外边距,9月3日学习CSS选择器,背景设置,及内外边距知识总结
  5. 题库明细 使用java理解程序逻辑
  6. delphi 点击wsdl出不了描述文件_iOS 13 公测版来了,安装公测版官方描述文件
  7. 杭电OJ1002大数据相加
  8. 趁618买iPhone 11还是等iPhone 12?李楠有话要说
  9. 华为 hg8245c 超级密码
  10. 【安全牛学习笔记】密码嗅探、中间人攻击
  11. 智能爆炸的真实(上)
  12. 从思维走向实践,数字化转型 IT 经营的成功路径
  13. hostapd_cli 使用手册
  14. (一)淘宝首页的代码(周六一天敲出来的)html结构展示
  15. 抖音最近很火的游戏直播:挤地铁教程+源码+软件下载
  16. 什么是透视变形的opencv和python
  17. 浅谈面向对象和面向过程
  18. MCAL_VADC配置
  19. python3中将'\xb2\xbb\xca\xc7\xc4\xda\xb2\xbf\xbb\xf2\xcd\xe2\xb2\xbf\xc3\xfc\xc1\xee'转成中文
  20. SecureCRT 设置黑底白字和编码

热门文章

  1. AutoCAD2016简体中文破解版32位64位下载
  2. html文字前画线代码,在div上画线
  3. 计算机一级汉字录入在线联系,计算机一级考试指导:汉字录入题的操作(3)
  4. html js 禁用浏览器上下滑动,纯JS阻止浏览器默认滚动事件,实现自定义滚动方法...
  5. linux下shell命令之hwclock
  6. 福玛特机器人怎么开机_五一解放双手的选择 福玛特扫地机器人解救你
  7. KEIL软件错误代码及错误信息
  8. android 呼叫转移 延时,Android:在延迟后设置呼叫转移
  9. 《云计算》SELinux安全防护(案例)
  10. DayDayUp:2019.01.24新东方年会—俞敏洪点赞并奖励吐槽神曲《释放自我》12万元!—附全歌词(牛逼的人在哪里都不会彷徨)