我的编程空间,编程开发者的网络收藏夹
学习永远不晚

upload-labs-master文件上传漏洞靶场详解(1-17)

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

upload-labs-master文件上传漏洞靶场详解(1-17)

目录

前言

pass-01

pass-02

pass-03

pass-04

pass-05

pass-06

pass-07

pass-08

pass-09

pass-10

 pass-11

 pass-12

pass-13

 pass-14

pass-15

pass-16

pass-17


本人是文件上传初学者,所以文章是按照自己做题思路写的,比较适合入门。如有错误欢迎指正!

前言

工具:phpstudy(不推荐使用小皮,因为小皮集成度和安全性较高,部分实验可能会出现错误),蚁剑或菜刀,BurpSuite,WinHex(十六进制文件编辑器)


pass-01

查看源代码发现只允许上传.jpg .png .gif三个类型的文件,于是把php一句话木马后缀改成.png(其他两个也行)结尾再上传。(目的是绕过前端验证)

一句话木马

//webshell.php  

使用bp抓包,修改文件后缀

 4.上传成功后是这样,把图片在新窗口打开,无报错信息说明上传成功了(文件上传成功不代表木马解析成功,要验证木马有没有解析成功要使用)

记住上传成功的路径(因为原路径中含有中文字符,所以插件自动使用了url编码)

 做到这一步已经算完成了,后面的蚁剑连接可以不操作。想要进一步验证的可以继续往下看

用中国蚁剑测试连接,地址为上面那个,直接复制过来,密码为root,测试成功后添加数据

pass-02

方法一:同pass-01

方法二:

  1. 直接上传.php文件会报错,查看源代码发现了上传限制:

 

 2.上传webshell.php文件,用bp拦截,修改参数Content-Type字段

 

 

3.放包,上传成功,记住路径

4.蚁剑连接

pass-03

  1. 先上传一个.php文件,看看报错情况,发现是黑名单验证
    1. 修改apache的配置文件。文件位置:phpstudy-->其他菜单选项-->打开配置问价-->httpd.conf。在文件中加入:AddType application/x-httpd-php .php .phtml .phps .php5 .pht .html,如下所示。目的是使浏览器能解析带有以下后缀的文件。保存,重启服务。

     3.上传webshell.php文件,bp抓包修改为webshell.php5,因为已经在配置文件加入了.php5后缀的验证,所以.php5既可以绕过黑名单,网站也能解析。

    在回显包中查看上传路径,用蚁剑连接

    在用蚁剑连接时如果多次出现返回数据为空的情况有可能是浏览器还没有把木马解析成功,重启一下phpstudy服务和靶场,多试几次。如果蚁剑报错的是一长串红色代码,那可能是路径出错了。

pass-04

查看源代码,发现黑名单禁止了很多后缀文件通过,可以用.htaccess进行绕过。简单来说.htaccess文件的作用就是把当前目录的所有文件都当作php解析,无论上传什么文件都当作php执行。

 关于.htaccess文件的详细知识请参考:(40条消息) .htaccess简介_web(song)的博客-CSDN博客_.htaccess

使用.htaccess的前提是①.mod_rewrite模块开启。(这项不用理会,php是默认开启的)②.AllowOverride All

        (1)创建一个.htaccess文件,里面的内容为如下:这个文件的目的是把上传的.jpg文件全部转化成.php文件

        (2)修改配置文件httpd.conf:

 

先上传.htaccess,再上传webshell.jpg。上传webshell.jpg的 时候用Bp抓包,可以发送到重发器,在回显包中记住路径

用蚁剑连接,成功

 

pass-05

直接查看源代码,发现黑名单增加了.htaccess限制,文件末尾点限制,字符串::$DATA限制和空格限制。但是没有大小写限制,可以通过大小写来绕过验证

 2.将文件命名修改成webshell.PhP后上传,记住上传成功路径,蚁剑连接

pass-06

直接查看源代码,发现有文件后缀、.htacess、文件末尾点、字符、大小写限制,但是没有文件末尾空格限制。

 2.上传webshell.php文件,抓包,在bp中将后缀末尾加一个空格,上传成功查看回显包路径,蚁剑连接

pass-07

  1. 直接查看源代码,发现没有文件末尾点.限制

 

上传webshell.php文件,在bp中将将后缀末尾加一个点,上传成功查看回显包路径.

pass-08

1.查看源代码,发现没有特殊字符::$DATA限制

 2.修改文件名为webshell::$DATA.php.在window的时候如果文件名+"::$DATA"会把::$DATA之后的数据当成文件流处理,不会检测后缀名,且保持::$DATA之前的文件名,他的目的就是不检查后缀名.

上传.php文件,在bp中将将后缀末尾加::$DATA,上传成功查看回显包路径

 4.上传.php文件,在bp中将将后缀末尾加::$DATA,上传成功查看回显包路径

 

pass-09

分析一下源代码,如果文件末尾有点和空格,会删除点和空格,但都只会删除一次,如果把点和空格连用,就可以绕过。

 2.上传webshell.php在bp修改后缀,加上“.  .”点空格点,经过解析后会删除一个点和一个空格,只剩下webshell.php.既能绕过.php后缀限制,又能解析成功

 

pass-10

使用双写绕过

 pass-11

查看了源代码,发现使用了白名单验证,所以之前的方法都不能用了。并且$img_path这个变量是直接拼接的,所以可以用%00进行截断绕过

把phpstudy版本切换到低于5.3.29,并把魔术函数magic_quotes_gpc相关选项都关闭。做完之后记得把php版本改回来,不然后面的题可能会出错。

 

 3.上传.jpg文件,在bp中修改。变量save_path= 代表路径可控,且在GET参数中,%00会自动解码,所以可以直接修改存储路径。在webshell.php后面加上%00,其后面的内容就会被阶段,上传成功后就是php文件。

 pass-12

  1. 查看源代码,这一题的传参方法变成了POST类型

 2.在POST里加%00会被认为是普通字符串,所以%00不会自动解码,要先对%00进行编码

 

pass-13

  1. 题目背景说了这题是图片马+文件按包含。于是先制作图片马。先准备一张正常图片(1.jpg),和一句话木马(webshell.php)放在同一文件夹下面,打开命令行cmd,输入以下命令:
copy 1.jpg/b + webshell.php/a PhotoShell,jpg// /b是二进制文件,/a是ASCII文件,PhotoShell,jpg是新生成的图片马的文件

以下返回表示图片马制作成功

2.上传PhotoShell.jpg,会显示上传成功。但是这个时候网站不会把图片解析成php利用,所以要借助文件包含。因为在PHP中,使用include、require、include_once、require_once函数包含的文件都会被当作PHP代码执行,无论文件的名称是什么,只要符合文件内容符合PHP代码规范,都会被当作PHP代码执行。

3.构造文件包含路径并访问,出现乱码而非原本的图片,说明利用成功。需要注意的是,做这题的phpstudy版本要调高一点,之前在做某一题的时候把版本调成了5.3.23,需要调成5.4.45才能成功。构造路径:http://127.0.0.1/include.php?file=upload/图片名.jpg

 4.蚁剑连接时,注意url地址是含有include?file那个,而不是只有图片路径的。

 pass-14

查看源代码,使用了getimagesize函数来判断文件类型。还是可以用图片马绕过

getimagesize()函数详细知识参考:php getimagesize 函数 – 获取图像信息 | 菜鸟教程 (runoob.com) 

2.其余步骤同13

pass-15

1.查看源代码,这题是利用php_exif来判断文件类型,可以用图片马绕过。

 exif_imagetype()函数详细知识参考:PHP: exif_imagetype - Manual

在上传之前记得修改配置文件php.exif,将其打开,不然上传上去就是一片空白.改好后重启一下。

 

 3.其余步骤同13

pass-16

  1. 本题是二次渲染,刚开始上传的图片会被渲染,导致原有的属性被改变。为了方便先做一张gif的图片马。(推荐使用gif)

2.利用WinHex十六进制文件编辑器,将一句话木马放到不会被改变的位置,保存

WinHex下载地址:

链接:https://pan.baidu.com/s/16Pxrz2kDU823CwjOO6TDtQ 
提取码:8lk3

 3.修改之后可以看到,有马图片明显比正常图片有病。上传有马图片,利用文件包含,其余步骤同13

 

上传成功

pass-17

步骤同16

来源地址:https://blog.csdn.net/zwy15288408160/article/details/126579032

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

upload-labs-master文件上传漏洞靶场详解(1-17)

下载Word文档到电脑,方便收藏和打印~

下载Word文档

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录