IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: 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配置文件中有如下代码:

AddType application/x-httpd-php .php .phtml .phps .php5 .pht

没有上面配置,确实可以上传上去,但是我们去访问的时候,发现被当成了静态资源文件执行,所以是不可取的。技巧:凡是源码里有删除掉什么的,我们都可以试试双写绕过,所以这里我们在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文件内容如下:

<FilesMatch "tony">
 ?  SetHandler application/x-httpd-php
</FilesMatch>

第五关:(大小写绕过)

思路:相较于第四关,这一关把.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,所以在解析时,中间件只会把它当作静态资源文件执行,不会把它交给动态脚本解析器,因此还要使用文件包含漏洞。

源码如下:

function getReailFileType($filename){
    $file = fopen($filename, "rb");
    $bin = fread($file, 2); //只读2字节
    fclose($file);
    $strInfo = @unpack("C2chars", $bin);    
    $typeCode = intval($strInfo['chars1'].$strInfo['chars2']);    
    $fileType = '';    
    switch($typeCode){      
        case 255216:            
            $fileType = 'jpg';
            break;
        case 13780:            
            $fileType = 'png';
            break;        
        case 7173:            
            $fileType = 'gif';
            break;
        default:            
            $fileType = 'unknown';
        }    
        return $fileType;
}

$is_upload = false;
$msg = null;
if(isset($_POST['submit'])){
    $temp_file = $_FILES['upload_file']['tmp_name'];
    $file_type = getReailFileType($temp_file);

    if($file_type == 'unknown'){
        $msg = "文件未知,上传失败!";
    }else{
        $img_path = UPLOAD_PATH."/".rand(10, 99).date("YmdHis").".".$file_type;
        if(move_uploaded_file($temp_file,$img_path)){
            $is_upload = true;
        } else {
            $msg = "上传出错!";
        }
    }
}

制作图片马:

copy aa.jpg /b + shell.php /a shell.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
上一篇文章      下一篇文章      查看所有文章
加:2021-10-22 10:46:41  更:2021-10-22 10:46:49 
 
开发: 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-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码