upload-labs靶场练习

server/2025/1/21 5:45:00/

01(JS前端认证)

客户端JS脚本有限制,本来想用上次笔记的方法来做(即改扩展名为.jpg,上传,抓包,改扩展名为.php,放行或者发送至repeater,改扩展名然后重发,再使用蚁剑连接),但是不知道是什么原因上传不成功,只好选择另一种方法来做

首先打开谷歌浏览器的设置,选择隐私与安全

选择网站设置

找到JavaScript然后选择“不允许网站使用JavaScript”(即关闭JS)

然后返回界面,直接上传一个php类型的一句话木马

就会自动识别为图片

右键点击图片复制图片地址

使用蚁剑连接成功,说明上传成功

也可以用hackbar构造传参,返回phpinfo界面即为传参成功

源码解读(关键部分在复制源码时已有解读):

function checkFile() {var file = document.getElementsByName('upload_file')[0].value;#获取用户选择的文件名if (file == null || file == "") {alert("请选择要上传的文件!");return false;}#检查用户是否选择文件//定义允许上传的文件类型var allow_ext = ".jpg|.png|.gif";//提取上传文件的类型var ext_name = file.substring(file.lastIndexOf("."));//判断上传文件类型是否允许上传if (allow_ext.indexOf(ext_name + "|") == -1) {var errMsg = "该文件不允许上传,请上传" + allow_ext + "类型的文件,当前文件类型为:" + ext_name;alert(errMsg);return false;}
}

02(MIME认证)

解读代码:

$is_upload = false;
$msg = null;#定义两个变量,is_upload标记文件是否上传,初始值为false,msg存储上传过程中的错误信息,初始值为null
if (isset($_POST['submit']))#检查是否点击了submit按钮,如果有就接着执行 {if (file_exists(UPLOAD_PATH))#检查上传目录UPLOAD_PATH是否存在 {if (($_FILES['upload_file']['type'] == 'image/jpeg') || ($_FILES['upload_file']['type'] == 'image/png') || ($_FILES['upload_file']['type'] == 'image/gif'))#检查文件类型是否为image/jpeg、image/png、image/gif {$temp_file = $_FILES['upload_file']['tmp_name'];$img_path = UPLOAD_PATH . '/' . $_FILES['upload_file']['name']            if (move_uploaded_file($temp_file, $img_path)) {$is_upload = true;} else {$msg = '上传出错!';#如果上传文件类型正确,则将该文件移动到目标路径,若移动失败则显示“上传出错!”}} else {$msg = '文件类型不正确,请重新上传!';#如果上传文件类型错误,则显示错误}} else {$msg = UPLOAD_PATH.'文件夹不存在,请手工创建!';}
}

通过其检查的是文件类型image/jpeg……可看出本题的基本思路是抓包修改content-type,选择一个一句话木马,上传并抓包发至重放器

将Content-Type改为 image/jpeg(只要是代码解释里面的三个都可)

发包后即可得到文件路径,使用蚁剑连接成功

03(php3、phtml绕过黑名单)

解读源码:

12行:定义两个变量,is_upload标记文件是否上传,初始值为false,msg存储上传过程中的错误信息,初始值为null

3:submit按钮是否被点击

4:检查上传目录是否存在

5-11:获取文件扩展名并将其转换为小写

13-22:检查扩展名,不允许‘.asp’、'.aspx'、'.php'、'.jsp'类型的文件上传(若没有这么多限制,只是不允许.php文件上传的话,可以通过剩下几个文件扩展名替代php),若是这些文件以外的文件上传,则正常上传,并且从第15行可以看出,路径由上传目录、当前日期时间(YmdHis格式)、4位随机数和文件扩展名组成

解题过程:

思路为可将文件扩展名改为.php3、.php4来绕过,但是新版本的phpstudy没有ts版本的php,所以就去下载了一个2018版的phpstudy

根据提示下载了运行库合集

下载完接着切换php版本(php-5.2.17+Apache)

打开设置

CTRL+f搜索addtype找到这句话

去掉#,并在后面添加内容,使其变为

保存后像第一次搭建网站一样把upload-labs放到phpstudy2018的WWW文件夹下,访问127.0.0.1即可开始做题

先上传一个一句话木马

bp抓包,修改文件后缀为.php3然后重发

复制并拼接文件路径

使用蚁剑连接即可

04(.htaccess绕过黑名单)

源码解析:
$is_upload = false;#初始化一个变量,表示文件是否上传成功
$msg = null;#初始化一个变量,用于存储上传过程中的提示信息
if (isset($_POST['submit']))#确认submit按钮是否被点击 {if (file_exists(UPLOAD_PATH))#检查上传目录是否存在 {$deny_ext = array(".php",".php5",".php4",".php3",".php2",".php1",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3",".pHp2",".pHp1",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx",".ashx",".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",".swf",".ini");#不允许上传的文件扩展名,这里几乎隔绝了所有我们能更改来绕过的扩展名$file_name = trim($_FILES['upload_file']['name']);$file_name = deldot($file_name);//删除文件名末尾的点$file_ext = strrchr($file_name, '.');$file_ext = strtolower($file_ext); //转换为小写$file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA$file_ext = trim($file_ext); //收尾去空#上面一大段都是为了提取文件扩展名if (!in_array($file_ext, $deny_ext)) {$temp_file = $_FILES['upload_file']['tmp_name'];$img_path = UPLOAD_PATH.'/'.$file_name;if (move_uploaded_file($temp_file, $img_path)) {$is_upload = true;} else {$msg = '上传出错!';}} else {$msg = '此文件不允许上传!';#查看文件扩展名是否在黑名单里,若是不在则正常上传并保存上传路径,若是在则提示“此文件不允许上传”}} else {$msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';}
}

根据源码解读,该题属于大量的文件后缀被限制,即除了php外常见的可绕过的后缀都被限制,可尝试上传.htaccess后缀文件,但是此方法仅限于aoache服务器

知识点补充:
大佬的通关wp

.htaccess是一个纯文本文件,它里面存放着Apache服务器配置相关的指令。
.htaccess主要的作用有:URL重写、自定义错误页面、MIME类型配置以及访问权限控制等。主要体现在伪静态的应用、图片防盗链、自定义404错误页面、阻止/允许特定IP/IP段、目录浏览与主页、禁止访问指定文件类型、文件密码保护等。
.htaccess的用途范围主要针对当前目录。

创建.htaccess文件,代码如下:

方法一:
<FilesMatch "4.png">
SetHandler application/x-httpd-php
</FilesMatch>
#如果当前目录下有4.png,就会被解析为.php
 
方法二:
AddType application/x-httpd-php .png
#如果当前目录下有以.png结尾的文件,就会被解析为.php,.png后面也可以添加其他文件形式

解题过程:

一开始做不出来,后面去搜了别人的wp,说是nst版本的phpstudy做不出来,又换成2018版的phpstudy,但还是不行

首先编辑一个.htaccess文件上传并抓包发送至重发器

将文件名改为abc.jpg,文件内容改为一句话木马,重新发包

复制,拼接路径,使用蚁剑连接


http://www.ppmy.cn/server/160093.html

相关文章

springboot医院信管系统

摘 要 随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&#xff0c;各行各业相继进入信息管理时代&a…

【cursor重构谷粒商城】03——谷粒商城技术架构选型存在哪些不足?

前言&#xff1a;这个系列将使用最前沿的cursor作为辅助编程工具&#xff0c;来快速开发一些基础的编程项目。目的是为了在真实项目中&#xff0c;帮助初级程序员快速进阶&#xff0c;以最快的速度&#xff0c;效率&#xff0c;快速进阶到中高阶程序员。 本项目将基于谷粒商城…

1.7 ChatGPT:引领AI对话革命的致胜之道

ChatGPT:引领AI对话革命的致胜之道 随着人工智能(AI)技术的迅猛发展,特别是在自然语言处理(NLP)领域,OpenAI 的 ChatGPT 已经成为了举世瞩目的技术突破。从普通的自动化客服到深入的创作与协作,ChatGPT 通过其卓越的语言理解和生成能力,改变了人们与计算机交互的方式…

【HeadFirst系列之HeadFirst设计模式】第3天之观察者模式

前言 从今日起&#xff0c;陆续分享《HeadFirst设计模式》的读书笔记&#xff0c;希望能够帮助大家更好的理解设计模式&#xff0c;提高自己的编程能力。 设计模式本质上就是前人比较成熟的经验和智慧。他们遇到过相同的问题&#xff0c;也顺利地解决了这些问题。 跟随前人的脚…

网络安全中攻击溯源有哪些方法?

目前网络攻击已经成为常见的安全威胁之一&#xff0c;其造成的危害和损失都是不可估量的&#xff0c;因此网络攻击受到了高度重视。而当我们遭遇网络攻击时&#xff0c;攻击溯源是一项非常重要的工作&#xff0c;可以帮助我们迅速发现并应对各类网络攻击行为&#xff0c;那么网…

【Linux】重定向缓冲区

一、文件内核级缓冲区 在一个struct file内部还要有一个数据结构-----文件的内核级缓冲区。 1.1 write写入操作 当我们去对一个文件写入的时候&#xff0c;那么是如何进行写入的呢&#xff1f; 如&#xff1a;write(3,"hello",..) 先找到文件的内核缓冲区&#…

DDD - 如何设计支持快速交付的DDD技术中台

文章目录 Pre概述打造快速交付团队烟囱式的开发团队(BAD)大前端技术中台(GOOD) 技术中台的特征简单易用的技术中台建设总结 Pre DDD - 软件退化原因及案例分析 DDD - 如何运用 DDD 进行软件设计 DDD - 如何运用 DDD 进行数据库设计 DDD - 服务、实体与值对象的两种设计思路…

Dedecms V110最新版RCE---Tricks

前言 刚发现Dedecms更新了发布版本&#xff0c;顺便测试一下之前的day有没有修复&#xff0c;突然想到了新的tricks去实现RCE。 文章发布的时候估计比较晚了&#xff0c;一直没时间写了。 利用 /uploads/dede/article_string_mix.php /uploads/dede/article_template_rand.…