| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> PHP知识库 -> 3-7 【实验】21-数组配合windows特性绕过+代码审计 -> 正文阅读 |
|
[PHP知识库]3-7 【实验】21-数组配合windows特性绕过+代码审计 |
今天我们来讲pass-20,我们先进行上传测试,我们抓个包 然后我们repeater直接点上传 它提示我们禁止上传该类型文件,在之前绕过的方法里面,我们可以在Content-Type那边改,image/jpeg,然后我们在上传 提示我们文件上传成功,但是它是一个jpg的图片,我们要上传一个php的文件,说明后台的一个文件校验是通过Content-Type来进行的 我们先去读一下后台的文件代码
首先允许上传的文件类型
如果我们的type没有在allow_type里面的话,就提示禁止上传该类型文件
如果说save_name为空,就用upload_file,如果说不为空,就用POST[‘save_name’],所以说,我们save_name肯定不为空的,所以说,它用的就是我们的save_name
判断file是否为数组,,如果是数组的话,代码继续执行,如果不是数组,就把它转化为数组,最终我们的file肯定是数组的类型 explode就是把字符串用点进行分隔,比方说,a.b.c,它数组下标为0就是a,下标为1就是b,它把它做成长度为3的一个数组 正常来说,我们上传的文件是a.php,那file里面就是有两个元素,一个是a,一个是php,
取我们数组的最后一个元素,就是相当于取我们的后缀名
如果说ext在array里面,那就走下面,如果不存在禁止上传,到这边,没有出什么问题
关键在这段代码,首先这串代码,要生成保存的文件名,首先file数组,reset如果成功取数组的第一个,如果不成功,返回false,正常来说,我们的后缀名是a.php的话,这个时候reset($file)返回的应该是a,加个点,在加p一个点,就是a,p一个点,count取这个数组长度,正常来说,这个长度是2,2-1为1,下标为1,就是p,就是说,文件名点后缀名组成了这个a.php,这个-1,大家一定要注意,是从下表为1开始的,比如说,它数组元素有3个,那它的count就是3,但是你取最后一个数组,它的下标应该是2 把save_name做成数组,就不用分割了,数组里面的内容也可控,我们就能够绕过这段话,我们试一下
我们把这段话ctrl+c,ctrl+v,把save_name做成数组,数组下标为0,在我们reset的时候,下标为php,因为这边不写php,后边,没有机会了, 这里我们要用到数组里面的一个表示方式
首先我们0的时候是20.php,当它是2的时候是jpg,也就是它长度是2,但它reset取的时候,肯定是取0,但如果我们是3个的时候,[count($file) - 1]就是2,取2,那它值是个jpg,这样子绕不过去 这个时候我们就要用到php的一个特性,我们在写的时候,只写0跟2,array(2)长度是2,[count($file) - 1]就是1,1没有呀,返回空,那就是2.php.空,就组成了新的扩展名 我们知道在windows里面,生成文件的时候,末尾的点是被抹掉的 这样就非常巧妙的绕过了后台的写法,我们在请求方法里面,save_name[2],文件名jpg 这样子我们就可以绕过所有的代码了,我们点go 上传成功,我们在浏览器里面访问一下 我们在菜刀里面连接一下 OK 我们在不看后台代码的情况下,很难分析到前台的利用方法,所以说,还是要以分析代码为主 其实这20个上传方式,只是我们文件上传的冰山一脚,上传的方式、种类的多少,关键在于我们开发人员写代码的花样有多多,不同的花样,肯定有不同的方式,所以说,我们还是要多关注代码,多积累经验,才能知道,我们有那些绕过方式,在我们渗透测试的时候,不断的去试错,按照我们的经验去尝试很多种绕过方法,然后最终进行绕过,上传 |
|
PHP知识库 最新文章 |
Laravel 下实现 Google 2fa 验证 |
UUCTF WP |
DASCTF10月 web |
XAMPP任意命令执行提升权限漏洞(CVE-2020- |
[GYCTF2020]Easyphp |
iwebsec靶场 代码执行关卡通关笔记 |
多个线程同步执行,多个线程依次执行,多个 |
php 没事记录下常用方法 (TP5.1) |
php之jwt |
2021-09-18 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 6:17:32- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |