首页 > 其他分享 >upload-labs第一关教程

upload-labs第一关教程

时间:2024-06-04 22:34:17浏览次数:15  
标签:第一关 upload labs ext file Pass var 上传

upload-labs第一关教程

1. 源代码分析

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;
    }
}

通过以上代码,属于白名单绕过,可以发现对文件类型进行了限制,且只允许jpg、png、gif的文件类型进行通过。

2.绕过方法

方法1:禁用js或者使用开发者工具删除前端js代码验证

1)访问第一关,使用开发者工具查看前端代码

在这里插入图片描述
可以发现是存在一个checkFile()的事件的,所以将其删除或者改为True。都能将其绕过

我这里将其删除,进行演示

在这里插入图片描述
然后上传eval.php文件
在这里插入图片描述
上传成功,使用中国蚁剑进行连接
URL就是http://192.168.1.10/upload-labs-master/upload/eval.php
在这里插入图片描述
发现连接成功。

2)禁用js

在这里插入图片描述

方法2:使用Burp suite抓包进行修改后缀

1)将文件名后缀更改为eval.png,使用burp suite进行抓包修改后缀

在这里插入图片描述
修改之后进行放包。
在这里插入图片描述
发现是上传到服务器后台了成功绕过。

2)使用中国蚁剑进行连接

在这里插入图片描述
连接成功。

方法3:保存源代码,然后删除js代码,访问

1) 使用开发者工具进行获取源代码

调试器—upload-labs-master—Pass-01
在这里插入图片描述
ctrl+a复制下来。

2)在viscode中删除js模块

在这里插入图片描述
然后进行保存。

3)在原第一关找到提交的位置

在这里插入图片描述
添加进去,代码如下:

<html>
<head>
	<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
	<link rel="icon" type="image/x-icon" href="/upload-labs-master/img/favicon.png" />  
	<title>upload-labs</title>
</head>
<link rel="stylesheet" type="text/css" href="/upload-labs-master/css/index.css">
<link rel="stylesheet" type="text/css" href="/upload-labs-master/css/prism.css">
<body>
	<div id="head">
		<a href="/upload-labs-master/"><img src="/upload-labs-master/img/logo.png"/></a>
		<div id="head_menu">
			<a id="handle_code" href="javascript:show_code()">显示源码</a>
			<a href="javascript:get_prompt()">查看提示</a>
			<a href="javascript:clean_upload_file()">清空上传文件</a>
		</div>
	</div>
	<div id="main"><div id="menu">     
	<ul id="menulist">         
		<li><a id="Pass-01" href="/upload-labs-master/Pass-01/index.php">Pass-01</a></li> 
		<li><a id="Pass-02" href="/upload-labs-master/Pass-02/index.php">Pass-02</a></li> 
		<li><a id="Pass-03" href="/upload-labs-master/Pass-03/index.php">Pass-03</a></li> 
		<li><a id="Pass-04" href="/upload-labs-master/Pass-04/index.php">Pass-04</a></li> 
		<li><a id="Pass-05" href="/upload-labs-master/Pass-05/index.php">Pass-05</a></li> 
		<li><a id="Pass-06" href="/upload-labs-master/Pass-06/index.php">Pass-06</a></li> 
		<li><a id="Pass-07" href="/upload-labs-master/Pass-07/index.php">Pass-07</a></li> 
		<li><a id="Pass-08" href="/upload-labs-master/Pass-08/index.php">Pass-08</a></li> 
		<li><a id="Pass-09" href="/upload-labs-master/Pass-09/index.php">Pass-09</a></li> 
		<li><a id="Pass-10" href="/upload-labs-master/Pass-10/index.php">Pass-10</a></li> 
		<li><a id="Pass-11" href="/upload-labs-master/Pass-11/index.php">Pass-11</a></li> 
		<li><a id="Pass-12" href="/upload-labs-master/Pass-12/index.php">Pass-12</a></li> 
		<li><a id="Pass-13" href="/upload-labs-master/Pass-13/index.php">Pass-13</a></li> 
		<li><a id="Pass-14" href="/upload-labs-master/Pass-14/index.php">Pass-14</a></li> 
		<li><a id="Pass-15" href="/upload-labs-master/Pass-15/index.php">Pass-15</a></li> 
		<li><a id="Pass-16" href="/upload-labs-master/Pass-16/index.php">Pass-16</a></li> 
		<li><a id="Pass-17" href="/upload-labs-master/Pass-17/index.php">Pass-17</a></li> 
		<li><a id="Pass-18" href="/upload-labs-master/Pass-18/index.php">Pass-18</a></li> 
		<li><a id="Pass-19" href="/upload-labs-master/Pass-19/index.php">Pass-19</a></li>
		<li><a id="Pass-20" href="/upload-labs-master/Pass-20/index.php">Pass-20</a></li>
        <li><a id="Pass-21" href="/upload-labs-master/Pass-21/index.php">Pass-21</a></li>
	</ul> 
</div>

<div id="upload_panel">
    <ol>
        <li>
            <h3>任务</h3>
            <p>上传一个<code>webshell</code>到服务器。</p>
        </li>
        <li>
            <h3>上传区</h3>
            <form action='http://192.168.1.10/upload-labs-master/Pass-01/index.php' enctype="multipart/form-data" method="post" onsubmit="return checkFile()">
                <p>请选择要上传的图片:<p>
                <input class="input_file" type="file" name="upload_file"/>
                <input class="button" type="submit" name="submit" value="上传"/>
            </form>
            <div id="msg">
                            </div>
            <div id="img">
                <img src="../upload/eval.php" width="250px" />            </div>
        </li>
	    <li id="show_code">
    <h3>代码</h3>
<pre>
<code class="line-numbers language-javascript">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;
    }
}
</code>
</pre>
</li>	</ol>
</div>

</div>
		<div id="footer">
			<center>Copyright&nbsp;@&nbsp;<span id="copyright_time"></span>&nbsp;by&nbsp;<a href="http://gv7.me" target="_bank">c0ny1</a></center>
		</div>
		<div class="mask"></div>
		<div class="dialog">
		    <div class="dialog-title">提&nbsp;示<a href="javascript:void(0)" class="close" title="关闭">关闭</a></div>
		    <div class="dialog-content"></div>
		</div>		
</body>
<script type="text/javascript" src="/upload-labs-master/js/jquery.min.js"></script>
<script type="text/javascript" src="/upload-labs-master/js/prism.js"></script>
<script type="text/javascript" src="/upload-labs-master/js/prism-line-numbers.min.js"></script>
<script type="text/javascript" src="/upload-labs-master/js/prism-php.min.js"></script>
<script type="text/javascript" src="/upload-labs-master/js/index.js"></script>
</html>

主要变化的是删除了js代码和添加了一个提交表单的位置。
在这里插入图片描述

4)在自己的新的第一关上提交php文件

访问:http://192.168.1.10/pass01.php
在这里插入图片描述
上传eval.php文件
在这里插入图片描述
上传成功。
上传成功之后应该会自动跳转到正确的网页上。如下:
在这里插入图片描述

5)使用中国蚁剑进行连接

在这里插入图片描述
连接成功。

标签:第一关,upload,labs,ext,file,Pass,var,上传
From: https://blog.csdn.net/m0_73528952/article/details/139426130

相关文章

  • Frida-Labs
    0x1获取了100以内的随机数只需要确保输入的数为随机数的2倍+4即可hook该方法,返回值随意,只要自己输入符合对该值的要求即可Java.perform(function(){letMainActivity=Java.use("com.ad2001.frida0x1.MainActivity");MainActivity["get_random"].implementat......
  • 记录自己在upload-labs的解题过程
    第十二关(get%00截断)打开第十二关,查看源代码发现进行了白名单过滤,只允许上传jpg、png、gif的图片格式,move_uploaded_file本函数检查并确保由 file 指定的文件是合法的上传文件(即通过PHP的HTTPPOST上传机制所上传的)。如果文件合法,则将其移动为由 newloc 指定的文件......
  • INFINI Labs 产品更新 | Easysearch 1.8.0 发布数据写入限流功能
    INFINILabs产品又更新啦~,包括Easysearchv1.8.0、Gateway、Console、Agent、Loadgenv1.25.0。本次各产品更新了很多亮点功能,如Easysearch新增数据写入限流功能,可实现节点、分片级限流;Gateway修复数据迁移过程中因消费不及时解压缩导致部分数据记录损坏而丢失记录问题,进一......
  • INFINI Labs 产品更新 | Console 1.24.0 操作日志审计功能发布
    INFINILabs产品又更新啦~,包括Console,Gateway1.24.0。本次各产品更新了很多亮点功能,如Console增加操作日志审计功能,优化数据探索字段统计,修复Gateway增加认证后添加实例失败等问题。以下是本次更新的详细说明。INFINIConsolev1.24.0INFINIConsole是一款非常轻量级的......
  • [996] Upload a file to an Amazon S3 bucket and obtain the URL of it using Python
    Certainly!TouploadafiletoanAmazonS3bucketusingPython(specificallywiththeboto3library)andobtainthelink(URL)forthatfile,followthesesteps:InstallBoto3:Makesureyouhavetheboto3libraryinstalled.Ifnot,youcaninstallit......
  • UploadLabs靶场
    目录Pass-01Pass-02Pass-03Pass-04Pass-05Pass-06Pass-07Pass-08Pass-09Pass-10Pass-11Pass-12Pass-13Pass-14Pass-15Pass-16Pass-17Pass-18Pass-19Pass-20都是鄙人做题思路记下来的一些心得笔记罢了。Pass-01先传一个图片过去,成功上传。尝试传muma过去,提示失败,但是这个提......
  • antd upload action 不写(前端解析内容)
     在使用AntDesign的Upload组件时,如果不提供action属性,那么文件的上传处理需要通过customRequest属性来自定义实现。以下是一个不使用action属性,而是通过customRequest实现文件上传的例子: importReactfrom'react';import{Upload,message,Button}from'antd';imp......
  • El-Upload组件上传图片并添加水印
    背景有的时候我们需要在上传图片中添加一些水印标识,然后上传至服务器效果图代码需求:点击直接预览图片,而不需要使用dialog上传图片添加水印后才预览图片上传图片文件添加水印。使用watermarkjs库转换将添加水印的图片转换成base64,更新预览图片的内容,否则预览的......
  • el-upload以及blob自动根据列表名称匹配下载
    dom文档<el-row:gutter="20"><el-col:span="16":offset="0"><el-form-itemlabel-width="120px"label="文件上传"><el-uploadref=......
  • upload-labs挑战笔记
    Pass-01直接上传php木马,发现前端报错关掉JS,再次进行上传右键获取地址获取shellPass-02在服务器端对数据包的MIME进行检查,只让Content-Type为image/jpeg|image/png|image/gif的文件通过。由此可知,它只对Content-Type做了判断,并没有对文件进行判断,因此我们可以上传.ph......