| |
|
开发:
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靶场练习 -> 正文阅读 |
|
[PHP知识库]upload-labs靶场练习 |
今天学习了文件上传漏洞的,下面是我结合的网上的一些资源和上课的内容整理的一些学习思路,仅供学习使用。 第一关:(js检查-后缀名)思路:第一关主要是检查上传webs hell文件后缀名,我们可以利用更改后缀名的方式绕过前端的检查,再通过burp拦截信息,在拦截信息里面更改我们的后缀名然后放出去,利用中国蚁剑连接以此达到控制目标服务器的目的。 第二关:(仅判断content-type类型)思路:第二关与第一关类似,还是检测文件的类型,只是检测方式不一样,第一关是检测文件的后缀名,而第二关是检测的一个Content-Type: image/jpeg,如果上传的文件不是其中之一就会提示文件类型不正确,而我们的解决办法还是一样通过burp拦截更改content-type就好了 第三关:(黑名单绕过)思路:这一关利用黑名单不允许用户上传.asp、.aspx、.php、.jsp后缀的文件,这一关网上教程说可以把后缀名改为php3,phtml,phps,.pht,但是前提是apache的httpd.conf配置文件中有如下代码:
没有上面配置,确实可以上传上去,但是我们去访问的时候,发现被当成了静态资源文件执行,所以是不可取的。技巧:凡是源码里有删除掉什么的,我们都可以试试双写绕过,所以这里我们在webshell.php文件后面加上::$DATA,但是这里直接输会给你删除掉,那么我们试试双写---webshell.php::$D::$DDATAATA,发现成功绕过 ::$DATA是Windows的NTFS文件系统中拥有的一个特性,通常被附加到文件扩展名后面 第四关:(.htaccess绕过)思路:黑名单几乎拒绝了所有有问题的后缀名,除了.htaccess,前提条件(1.mod_rewrite模块开启,2.AllowOverride All),因此先上传一个.htaccess文件,内容如下:SetHandler application/x-httpd-php,这样所有的文件都会当成php来解析。然后再上传一个不带后缀名的webshell文件就可以绕过了,访问那个文件时,后台仍要把该文件当作PHP文件运行。 也可以使用下面的这个.htaccess文件,先上传这个文件,然后再上传那个webshell文件,利用burp拦截,再拦截信息那里把文件名修改为tony就行了,.htaccess文件内容如下:
第五关:(大小写绕过)思路:相较于第四关,这一关把.htaccess文件也给过滤掉了,但将把文件后缀转换为小写去掉了,因此可以使用大写绕过的方法。因此这一关我们只需把后缀名任意字符改为大写就好了。 第六关:(空格绕过)思路:这题没有对后缀名进行去空,因此可以在后缀名加空格进行绕过。如:webshell.php 进行绕过,当然还是需要用burp拦截之后才能改。 第七关:点绕过思路:这一关相比前面的关卡,没有对后缀名末尾的点进行处理,利用Windows的特性可知,会自动去掉后缀名中的点,但我们可以利用burp在后缀名后加点,如:webshell.php. 第八关:(::$DATA绕过)思路:这一关没有对后缀名中的::$DATA进行过滤。在PHP+Windows的情况下:如果文件名+"::$DATA"会把::$DATA之后的数据当成文件流处理,不会检测后缀名.且保持"::$DATA"之前的文件名,利用Windows特性,可在后缀名中加"::$DATA"进行绕过,注:还是在burp里改 第九关:(点+空格+点绕过)思路:至于这一关它先把文件后缀末尾的点去掉了,还把空格去掉。因此我们试着先构造:webshell.php. ,发现不行,那么我们紧接着构造:webshell.php. .,发现成功绕过。代码先是去除文件名前后的空格,再去除文件名最后的点,再通过strchar()来寻找文件名的后缀,但是最后保存文件的时候没有重命名,而使用的原有文件名。 第十关:(双写绕过)思路:这一关就是通过把黑名单里的文件后缀名替换为空且只替换一次,因此我们只需要换位双写绕过就可以了。 第十一关:(%00截断绕过)源码如下:%00在acsii码中对应null,但在c语言环境下对应为截断,而大多数环境都是基于C语言架构,例如PHP、apache等 思路: 这一关使用的白名单判断,只允许jpg、png、gif格式的文件上传,那么我们就利用burp拦截给它想要的格式。当是GET接收情况的时候,直接用 %00 就可以了 ? ?注:截断条件:php版本小于5.3.4,php的magic_quotes_gpc为OFF状态 发现上传成功然后在访问shell文件地址的时候把shell.php后面截断的链接删除掉就可以访问了,我们再利用中国菜刀或蚁剑连接就可以了。 第十二关(截断绕过):思路:这一关与上一关的区别在于参数是通过post传递,虽然还是利用%00截断,但是POST不会像GET对%00进行自动解码,所以需要在二进制中进行修改。 按照上一关的操作,把shell.php改为shell.jpg,然后在upload/后面写入shell.php%00,就可以上传文件了。? 第十三关:(图片马绕过)思路:通过读文件的前2个字节判断文件类型,因此直接上传图片马即可,同时要注意的是直接访问我们制作的图片马,是不会把图片马当作动态脚本文件执行的,因为图片马的后缀名为.jpg,所以在解析时,中间件只会把它当作静态资源文件执行,不会把它交给动态脚本解析器,因此还要使用文件包含漏洞。 源码如下:
制作图片马:
再点击文件包含漏洞,如下所示 将图片在新标签页中打开,复制下面的地址 然后到文件包含漏洞的页面构造下面的语句 ?这样就可以访问我们的图片了,而且用这个链接我们还可以访问我们的服务器 ?第十四关:(图片马绕过)?思路:这一关与13关步骤类似 第十五关:(图片马绕过)思路:这里用到php_exif模块来判断文件类型,也就是目标服务器其的中间件有一个扩展程序为打开状态,我们就可以用图片马绕过,方法同pass-13,也可以通过在burp改图片文件头的方式绕过 打开php_exif位置如下: ? |
|
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 20:48:31- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |