| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> PHP知识库 -> upload-labs-master 文件上传 1到10关(适合小白,解释详细!) -> 正文阅读 |
|
[PHP知识库]upload-labs-master 文件上传 1到10关(适合小白,解释详细!) |
0x00前言 ????????首先如果进行全真模拟正常渗透,是很难看见源码的也就是说正常渗透过程中没法看提示和源码,文件上传漏洞又不同别的漏洞,我们只能挨个方法试试,这里为了方便大家了解和更好的学习,我会给大家看源码知晓原理。这个靶场需要大家有一定的php代码审计能力(其实能简单看懂代码就行)这个靶场最终任务简单来说是成功上传你想上传的含有功能的恶意代码(php的),所以最后正常情况下肯定要上传xx.php(特殊的下面会说到),如何知道上传是否成功(通关!),有两种方法,第一种是直接访问我们的后门,第二种是打开文件上传目录看文件有没有被成功上传。 0x01第一关(pass-01) 做一下前期工作 先建立一个php代码 然后命名为xx.php 我们首先直接上传php文件(因为最终任务就是传php文件) ?发现不允许上传并且有弹窗提示,看见弹窗大家应该都能理解这是javascript代码 也就是前端代码,说明该关卡采用前端检测,而且检测的是后缀名,所以我们利用burpsuite工具来进行绕过 方法如下: 我们打开burp让它 “开启拦截” ? 我们把“xx.php”改成“xx.jpg” 先点击“浏览”,选择刚改的xx.jpg,然后点击“上传” ? 这是发现工具成功抓包:这里特别注意一下“filename=”其实该关卡就是对这个filename进行检测 ?接下来把xx.jpg改成xx.php ?点击“forward” 发现上传成功 ? 进行验证,直接访问地址,教大家个简单的 可以直接右键这个图片然后选择“复制图片地址” ?直接访问这个地址就好啦 上传成功! 方法说完了我们说一下原理,可能大家刚入门会有很多不懂,例如为什么要上传的代码是php(这个前言有说)、为什么代码里面写的是“phpinfo();”写别的不行吗、为什么用burpsutie就可以绕过,是用来干嘛的....... 我给大家解答一下。 1.为什么使用phpinfo的代码而不用别的 ? ?其实道理很简单,你当然可以选择别的,前言说了,你可以选择你想上传的任何代码,我们这个文章(甚至很多别的靶场、测试)为什么选择phpinfo,因为效果明显,只要一访问就知道有没有上传成功,我们能上传上去phpinfo,当然也能上传上去木马,我们也可以用工具连接直接getshell,但是那样比较麻烦展示费劲,用phpinfo直观 2.为什么用burpsutie,这个工具是用来干嘛的 ? 这个简单来说(在这个靶场的主要作用)就是一个拦截数据包并且能修改的工具,原理很简单 打个比方我们正常通讯是用电脑(客户端)发送数据包到服务器(服务端)。bursuite夹在了两端之间,也就是说我们会先将数据发送给burp,然后burp再将数据发送给服务器,反过来亦然。 ?这就是我们为什么能绕过第一关的原因,刚才说了第一关的防护是做在客户端(前端)上,我们先把后缀改成jpg上传,此时防护检测到我们是jpg所以没有进行拦截,然后我们到了burp,再burp这改成了.php所以到了服务端就是php啦。 0x02第二关 ?首先大家先点一下这个“清空上传文件”,或者到你的目录下找到xx.php文件给他删掉,否则有可能会影响我们测试上传结果。 我们先看源码 这就是所谓的mime头检测 通关方法如下: 上传php文件 ? 该关卡检测的就是这里,简单来说content-type就是来标识该文件是个什么类型的文件(php还是jpg或者gif等等)。我们回到上面的源码发现他只让我们上传3种类型的,那我们就把burp里的改成上面三种? ?改完把包放出去。 ?我们继续访问刚才的地址,发现phpinfo页面成功显示,上传成功!通关! 原理 其实mime检测就是查你数据包的“content-type”这个值是不是他要求的,这就有点类似于白名单,这里大家要理解一下黑白名单,其实很好理解,黑名单就是在这个名单里的不予通过(拦截!),不在名单里的可以通过。白名单就是反着的,白名单里的可以通过,不在名单里的不可以通过。可以看出来mime检测就很类似白名单,我们通过改"content-type"成功绕过。 ? ? ? ? 这个时候会细心地同学发现,该关卡用第一关的方法也能绕过,这是为什么呢? 就像作者说的,每个关卡可能都有不同种过关方法,只要掌握原理,一切都会迎刃而解。第一关的方法因为我们本身就是.jpg后缀的,所以“conten-type”本身就符合第二关的要求,所以就可以上传成功了! 0x03第三关(pass-03) 同样删除之前的文件,然后我们来看代码。 ?大家可以看到很多有中文备注的信息,这些就是防护规则,我们要着重看一下,等下面几个关卡遇到时我们再说,图里很明显有个 这个就是我们上关讲原理提到的"黑名单" 意思就是.asp .aspx .php .jsp的文件都不能上传,如果检测到就进行拦截。 这关采用的方法是“用不常见的后缀”例如.php3 .php2等等 直接上传,上传成功!这关没什么问题直接下一关!? 0x04第四关(pass-04) 上代码 发现基本上能用的后缀都给黑名单掉了,上一关的通关思路已经不行了,我们换另一种想法,就是上传.htaccess文件,让他把任何文件都当做".php"去读取,这就是.htaccess的功能。简单了解就好。 自己写个.htaccess 上传上去随便上传一个就可以了。 通关! 0x05第五关(pass-05) 我们发现这关已经把.htaccess给禁掉了 ?所以上一关的方法又行不通了。 这时候我们着重看一下之前提过的写防护规则的代码。 ?我们发现他写的代码的确没有问题,但是问题出现在他没有写循环,也就是说这些代码只会执行一次,所以我们写".php. ."就可以了 上传成功!访问地址?。 原理 ????????其实原理刚才已经说了,就是利用他写防护规则的逻辑问题,其实防护规则本来是没有问题的,可以很好地拦截,但是问题出现在他没有写循环,防护只发生一次,所以这个关卡只要卸了两个分开的“.”和任意空格就能绕过,例如:".php . ." ".php. . "等等甚至过分一点".php.? ?.? . .. . . "这些都可以。只要保证有两个分开的点就行了演示过程中是最简的方法,两个点放在一起会被防护规则同时删除掉。 ????????那么还有个问题就是为什么文件后缀"花里胡哨"的上传上去竟然还是php文件呢,这是由于Windows系统的命名规则,无论你后缀有多少个空格和点他都会给你自动删除掉,举个例子?。 我们新建一个命名"11.txt."敲回车! 发现他还是 我们改名为"11.txt "<----注意txt后有空格 敲回车发现还是11.txt ? ?也可以混合“11.txt . . . . .” 结果还是一样,大家可以自己试试,所以本关的通关方法基于以上两个原理。而且细心地同学肯定会注意到,上一关用这个方法也可以绕过。所以要掌握绕过的中心思想了解原理!这很重要,如果你懂了,其实有很多很多种方法都可以。 0x06第六关(pass-06) 上源码! ?我们对比之前的关卡,会发现他少了一个防护规则------转为小写! 那我们就利用这个来进行绕过。 ?后续步骤都一样,我就不重复了。 原理 就是利用他没有过滤大小写,导致我们可以用大写来绕过,后缀改成.Php .PHP .pHp都行只要不是php就行。 这样他就匹配不到我们就绕过啦! 大小写跟末尾加 “空格” “.”是一样的都会被Windows系统处理的。 0x07第七关(pass-07) 上源码 ?发现又有个新的规则没啦对比一下发现是-----去空! 那我们就利用这个绕过啦 注意这后门有“空格”啊,后续步骤就一样啦验证一下,通关! 0x08第八关(pass-08) 上源码! 发现又有个新的规则没啦----------去末尾的点! 那就利用这个绕过啦! 就好啦!通关! 0x09第九关(pass-09) 上源码! ?发现又又有个新规则没啦-------去除字符串::$DATA 那就利用这个! ?通关! 原理 简单来说加入::$DATA后会当做数据流来处理不会检测。 0x10第十关(pass-10) 上源码! 发现跟之前第五关的源码没有什么区别唯一的区别就是在deny中多加了个".ini" ? ?发现这关的考点才是第五关的通过方法“.php. .”第五关的通过方法是利用 .ini文件类似.htaccess .ini绕过方法你们可以看一下这篇文章写的还不错https://blog.csdn.net/weixin_49298265/article/details/11157231 所以这关的通关方法就是用".php. ."啦 通关! ? ? ? ? ? ? ? ? ? ? ? ? |
|
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/15 10:45:28- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |