专栏首页web安全(One)文件上传靶场练习
原创

文件上传靶场练习

注意:这里的环境要为php5.6以下没有nts的

Pass-01

直接上传图片码抓包修改后缀即可

Pass-02

同样上传图片码抓包修改后缀即可,比Pass-01多了个对MIME的检测,但对于上传图片码来说就没啥区别

Pass-03

查看源码

后台进行了黑名单限制,但是黑名单不完整,常见的可执行PHP文件的后缀:

php2、php3、php5、phtml、pht 当然这个的是配置文件里有才行

Pass-04

查看源码

$is_upload = false;
$msg = null;
if (isset($_POST['submit'])) {
    if (file_exists(UPLOAD_PATH)) {
        $deny_ext = array(".php",".php5",".php4",".php3",".php2",".php1",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3",".pHp2",".pHp1",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx",".ashx",".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",".swf");
        $file_name = trim($_FILES['upload_file']['name']);
        $file_name = deldot($file_name);//删除文件名末尾的点
        $file_ext = strrchr($file_name, '.');
        $file_ext = strtolower($file_ext); //转换为小写
        $file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA
        $file_ext = trim($file_ext); //收尾去空

        if (!in_array($file_ext, $deny_ext)) {
            $temp_file = $_FILES['upload_file']['tmp_name'];
            $img_path = UPLOAD_PATH.'/'.$file_name;
            if (move_uploaded_file($temp_file, $img_path)) {
                $is_upload = true;
            } else {
                $msg = '上传出错!';
            }
        } else {
            $msg = '此文件不允许上传!';
        }
    } else {
        $msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';
    }
}

可以看到这个黑名单黑的很死,但是却漏了htaccess,我们可以上传一个.htaccess的配置文件,从而绕过

SetHandler application/x-httpd-php
#就是让所有的文件都当作php文件解析

此时我们在上传一个图片码就行了

Pass-05

看源码

$is_upload = false;
$msg = null;
if (isset($_POST['submit'])) {
    if (file_exists(UPLOAD_PATH)) {
        $deny_ext = array(".php",".php5",".php4",".php3",".php2",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3",".pHp2",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx",".ashx",".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",".swf",".htaccess");
        $file_name = trim($_FILES['upload_file']['name']);
        $file_name = deldot($file_name);//删除文件名末尾的点
        $file_ext = strrchr($file_name, '.');
        $file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA
        $file_ext = trim($file_ext); //首尾去空

        if (!in_array($file_ext, $deny_ext)) {
            $temp_file = $_FILES['upload_file']['tmp_name'];
            $img_path = UPLOAD_PATH.'/'.date("YmdHis").rand(1000,9999).$file_ext;
            if (move_uploaded_file($temp_file, $img_path)) {
                $is_upload = true;
            } else {
                $msg = '上传出错!';
            }
        } else {
            $msg = '此文件类型不允许上传!';
        }
    } else {
        $msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';
    }
}

可以看出常规的后缀名都禁了,但是可以大小写混写绕过,当然这个目标运行环境得为windows

Pass-06

查看源码,将所有后缀转为小写在比对,所有大小写混写是行不通了

$is_upload = false;
$msg = null;
if (isset($_POST['submit'])) {
    if (file_exists(UPLOAD_PATH)) {
        $deny_ext = array(".php",".php5",".php4",".php3",".php2",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3",".pHp2",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx",".ashx",".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",".swf",".htaccess");
        $file_name = $_FILES['upload_file']['name'];
        $file_name = deldot($file_name);//删除文件名末尾的点
        $file_ext = strrchr($file_name, '.');
        $file_ext = strtolower($file_ext); //转换为小写
        $file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA
        
        if (!in_array($file_ext, $deny_ext)) {
            $temp_file = $_FILES['upload_file']['tmp_name'];
            $img_path = UPLOAD_PATH.'/'.date("YmdHis").rand(1000,9999).$file_ext;
            if (move_uploaded_file($temp_file,$img_path)) {
                $is_upload = true;
            } else {
                $msg = '上传出错!';
            }
        } else {
            $msg = '此文件不允许上传';
        }
    } else {
        $msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';
    }
}

Windows解析特点:如果后缀名的最后一位是空格,系统会自动把空格给删掉

Pass-07

查看源码

$is_upload = false;
$msg = null;
if (isset($_POST['submit'])) {
    if (file_exists(UPLOAD_PATH)) {
        $deny_ext = array(".php",".php5",".php4",".php3",".php2",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3",".pHp2",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx",".ashx",".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",".swf",".htaccess");
        $file_name = trim($_FILES['upload_file']['name']);
        $file_ext = strrchr($file_name, '.');
        $file_ext = strtolower($file_ext); //转换为小写
        $file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA
        $file_ext = trim($file_ext); //首尾去空
        
        if (!in_array($file_ext, $deny_ext)) {
            $temp_file = $_FILES['upload_file']['tmp_name'];
            $img_path = UPLOAD_PATH.'/'.$file_name;
            if (move_uploaded_file($temp_file, $img_path)) {
                $is_upload = true;
            } else {
                $msg = '上传出错!';
            }
        } else {
            $msg = '此文件类型不允许上传!';
        }
    } else {
        $msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';
    }
}

没有去除结尾的” .”(空格+点),可绕过

Pass-08

查看源码

$is_upload = false;
$msg = null;
if (isset($_POST['submit'])) {
    if (file_exists(UPLOAD_PATH)) {
        $deny_ext = array(".php",".php5",".php4",".php3",".php2",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3",".pHp2",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx",".ashx",".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",".swf",".htaccess");
        $file_name = trim($_FILES['upload_file']['name']);
        $file_name = deldot($file_name);//删除文件名末尾的点
        $file_ext = strrchr($file_name, '.');
        $file_ext = strtolower($file_ext); //转换为小写
        $file_ext = trim($file_ext); //首尾去空
        
        if (!in_array($file_ext, $deny_ext)) {
            $temp_file = $_FILES['upload_file']['tmp_name'];
            $img_path = UPLOAD_PATH.'/'.date("YmdHis").rand(1000,9999).$file_ext;
            if (move_uploaded_file($temp_file, $img_path)) {
                $is_upload = true;
            } else {
                $msg = '上传出错!';
            }
        } else {
            $msg = '此文件类型不允许上传!';
        }
    } else {
        $msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';
    }
}

发现没有过滤”::D A T A ” W i n d o w s 解 析 特 点 : 文 件 名 + ” : : DATA” Windows解析特点:文件名+”::DATA”Windows解析特点:文件名+”::DATA”会把::$DATA之后的数据当成文件流处理,并不会检测后缀名。

Pass-09

查看源码

$is_upload = false;
$msg = null;
if (isset($_POST['submit'])) {
    if (file_exists(UPLOAD_PATH)) {
        $deny_ext = array(".php",".php5",".php4",".php3",".php2",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3",".pHp2",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx",".ashx",".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",".swf",".htaccess");
        $file_name = trim($_FILES['upload_file']['name']);
        $file_name = deldot($file_name);//删除文件名末尾的点
        $file_ext = strrchr($file_name, '.');
        $file_ext = strtolower($file_ext); //转换为小写
        $file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA
        $file_ext = trim($file_ext); //首尾去空
        
        if (!in_array($file_ext, $deny_ext)) {
            $temp_file = $_FILES['upload_file']['tmp_name'];
            $img_path = UPLOAD_PATH.'/'.$file_name;
            if (move_uploaded_file($temp_file, $img_path)) {
                $is_upload = true;
            } else {
                $msg = '上传出错!';
            }
        } else {
            $msg = '此文件类型不允许上传!';
        }
    } else {
        $msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';
    }
}

该题好像各个方面都防御的很好,但是仔细一看会发现,该题先除去了文件后面的点,再除去空格,这里的操作都是一次,所以可以双写绕过

Pass-10

查看源码

$is_upload = false;
$msg = null;
if (isset($_POST['submit'])) {
    if (file_exists(UPLOAD_PATH)) {
        $deny_ext = array("php","php5","php4","php3","php2","html","htm","phtml","pht","jsp","jspa","jspx","jsw","jsv","jspf","jtml","asp","aspx","asa","asax","ascx","ashx","asmx","cer","swf","htaccess");

        $file_name = trim($_FILES['upload_file']['name']);
        $file_name = str_ireplace($deny_ext,"", $file_name); //如果file_name的值在deny_ext中就替换为空
        $temp_file = $_FILES['upload_file']['tmp_name'];
        $img_path = UPLOAD_PATH.'/'.$file_name;        
        if (move_uploaded_file($temp_file, $img_path)) {
            $is_upload = true;
        } else {
            $msg = '上传出错!';
        }
    } else {
        $msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';
    }
}

与前几题不同,这里没有过滤”.”,”::$DATA”等,应该上传对象不是windows,而这里的str_ireplace用来把黑名单里的字符替换成空格,且不区分大小,不可通过大小来替换

str_ireplace(find,replace,string,count)
 替换字符串中的一些字符(不区分大小写)

依旧可以双写绕过

Pass-11

查看源码

$is_upload = false;
$msg = null;
if(isset($_POST['submit'])){
    $ext_arr = array('jpg','png','gif');
    $file_ext = substr($_FILES['upload_file']['name'],strrpos($_FILES['upload_file']['name'],".")+1);
    if(in_array($file_ext,$ext_arr)){
        $temp_file = $_FILES['upload_file']['tmp_name'];
        $img_path = $_GET['save_path']."/".rand(10, 99).date("YmdHis").".".$file_ext;

        if(move_uploaded_file($temp_file,$img_path)){
            $is_upload = true;
        } else {
            $msg = '上传出错!';
        }
    } else{
        $msg = "只允许上传.jpg|.png|.gif类型文件!";
    }
}

这里使用了白名单,只允许jpg,png,gif后缀上传,但是这里通过$img_path=$_GET['save_path']."/".rand(10, 99).date("YmdHis").".".$file_ext;

拼接成文件储存路径,可通过00截断进行绕过

原理:修改后文件储存路径变成./upload/4.php%00/随机数/.jpg

​而php相关文件函数会认为%00是结束的标志,就成了…/upload/4.php

截断条件:

1、php版本小于5.3.4

2、php.ini的magic_quotes_gpc为OFF状态

此处自己没有那么低的php所以偷图来凑

Pass-12

查看源码

$is_upload = false;
$msg = null;
if(isset($_POST['submit'])){
    $ext_arr = array('jpg','png','gif');
    $file_ext = substr($_FILES['upload_file']['name'],strrpos($_FILES['upload_file']['name'],".")+1);
    if(in_array($file_ext,$ext_arr)){
        $temp_file = $_FILES['upload_file']['tmp_name'];
        $img_path = $_POST['save_path']."/".rand(10, 99).date("YmdHis").".".$file_ext;

        if(move_uploaded_file($temp_file,$img_path)){
            $is_upload = true;
        } else {
            $msg = "上传失败";
        }
    } else {
        $msg = "只允许上传.jpg|.png|.gif类型文件!";
    }
}

与Pass-11不同,这里用到了POST传值,这里用到的也是00截断

但是%00指的是一个空字符,代表结束,GET传值因为url编码会把它解析成空字符,而POST传值没有这个特点,所以我们得手动通过通过请求头的hex编码所对应的地方添加00(十六进制)来达到目的。

因此先在upload/后添加任意字符(一般为空格,因为空格对应的hex码为20比较好记)

通过hex编码我们可以找到upload/的位置,把它后面的20改为00即可。

还是由于这里没有低版的php截不了图

Pass-13

制作图片马

在cmd中执行copy 1.jpg /b + phpinfo.php /b phpinfo.jpg

可以利用文件包含

成功解析了

Pass-14

查看源码

function isImage($filename){
    $types = '.jpeg|.png|.gif';
    if(file_exists($filename)){
        $info = getimagesize($filename);
        $ext = image_type_to_extension($info[2]);
        if(stripos($types,$ext)>=0){
            return $ext;
        }else{
            return false;
        }
    }else{
        return false;
    }
}

其实就是多了对文件类型的判断,getimagesize() 函数用于获取图像大小及相关信息,成功返回一个数组,失败则返回 FALSE 并产生一条 E_WARNING 级的错误信息。

绕过方式和Pass-13一样

Pass-15

查看源码

function isImage($filename){
    //需要开启php_exif模块
    $image_type = exif_imagetype($filename);
    switch ($image_type) {
        case IMAGETYPE_GIF:
            return "gif";
            break;
        case IMAGETYPE_JPEG:
            return "jpg";
            break;
        case IMAGETYPE_PNG:
            return "png";
            break;    
        default:
            return false;
            break;
    }
}

exif_imagetype()函数用于判断一个图像的类型

所以绕过和Pass-13一样

Pass-16

是一个文件的二次渲染

先参考:https://xz.aliyun.com/t/2657#toc-3

直接利用现成的脚本

<?php
$p = array(0xa3, 0x9f, 0x67, 0xf7, 0x0e, 0x93, 0x1b, 0x23,
           0xbe, 0x2c, 0x8a, 0xd0, 0x80, 0xf9, 0xe1, 0xae,
           0x22, 0xf6, 0xd9, 0x43, 0x5d, 0xfb, 0xae, 0xcc,
           0x5a, 0x01, 0xdc, 0x5a, 0x01, 0xdc, 0xa3, 0x9f,
           0x67, 0xa5, 0xbe, 0x5f, 0x76, 0x74, 0x5a, 0x4c,
           0xa1, 0x3f, 0x7a, 0xbf, 0x30, 0x6b, 0x88, 0x2d,
           0x60, 0x65, 0x7d, 0x52, 0x9d, 0xad, 0x88, 0xa1,
           0x66, 0x44, 0x50, 0x33);



$img = imagecreatetruecolor(32, 32);

for ($y = 0; $y < sizeof($p); $y += 3) {
   $r = $p[$y];
   $g = $p[$y+1];
   $b = $p[$y+2];
   $color = imagecolorallocate($img, $r, $g, $b);
   imagesetpixel($img, round($y / 3), 0, $color);
}

imagepng($img,'./1.png');
?>

运行后用16进制形式打开文件

将这个文件上传抓包拦截,修改里面的内容,当然也可以直接打开修改在上传

成功解析了

Pass-17

查看源码

$is_upload = false;
$msg = null;

if(isset($_POST['submit'])){
    $ext_arr = array('jpg','png','gif');
    $file_name = $_FILES['upload_file']['name'];
    $temp_file = $_FILES['upload_file']['tmp_name'];
    $file_ext = substr($file_name,strrpos($file_name,".")+1);
    $upload_file = UPLOAD_PATH . '/' . $file_name;

    if(move_uploaded_file($temp_file, $upload_file)){
        if(in_array($file_ext,$ext_arr)){
             $img_path = UPLOAD_PATH . '/'. rand(10, 99).date("YmdHis").".".$file_ext;
             rename($upload_file, $img_path);
             $is_upload = true;
        }else{
            $msg = "只允许上传.jpg|.png|.gif类型文件!";
            unlink($upload_file);
        }
    }else{
        $msg = '上传出错!';
    }
}

分析源码move_uploaded_file($temp_file, $upload_file)会把上传的文件先移到一个临时文件,然后判断文件是否合法了在移动回去。

所以需要利用条件竞争删除文件时间差绕过。使用burpsuite

点击Start attack

快速访问

Pass-18

查看源码

前面有个upload,那我们利用条件竞争绕过访问改名前的文件时得在文件前面也要加个upload

7z后缀并不被Apache服务器所识别,却在上传文件名后缀的白名单中,可以利用Apache的解析漏洞将上传的7z后缀文件当做php文件解析

成功解析

Pass-19

$is_upload = false;
$msg = null;
if (isset($_POST['submit'])) {
    if (file_exists(UPLOAD_PATH)) {
        $deny_ext = array("php","php5","php4","php3","php2","html","htm","phtml","pht","jsp","jspa","jspx","jsw","jsv","jspf","jtml","asp","aspx","asa","asax","ascx","ashx","asmx","cer","swf","htaccess");

        $file_name = $_POST['save_name'];
        $file_ext = pathinfo($file_name,PATHINFO_EXTENSION);

        if(!in_array($file_ext,$deny_ext)) {
            $temp_file = $_FILES['upload_file']['tmp_name'];
            $img_path = UPLOAD_PATH . '/' .$file_name;
            if (move_uploaded_file($temp_file, $img_path)) { 
                $is_upload = true;
            }else{
                $msg = '上传出错!';
            }
        }else{
            $msg = '禁止保存为该类型文件!';
        }

    } else {
        $msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';
    }
}

采用了黑名单的限制,大小写混写可绕过

Pass-20

查看源码

$is_upload = false;
$msg = null;
if(!empty($_FILES['upload_file'])){
    //检查MIME
    $allow_type = array('image/jpeg','image/png','image/gif');
    if(!in_array($_FILES['upload_file']['type'],$allow_type)){
        $msg = "禁止上传该类型文件!";
    }else{
        //检查文件名
        $file = empty($_POST['save_name']) ? $_FILES['upload_file']['name'] : $_POST['save_name'];
        if (!is_array($file)) {
            $file = explode('.', strtolower($file));
        }

        $ext = end($file);
        $allow_suffix = array('jpg','png','gif');
        if (!in_array($ext, $allow_suffix)) {
            $msg = "禁止上传该后缀文件!";
        }else{
            $file_name = reset($file) . '.' . $file[count($file) - 1];
            $temp_file = $_FILES['upload_file']['tmp_name'];
            $img_path = UPLOAD_PATH . '/' .$file_name;
            if (move_uploaded_file($temp_file, $img_path)) {
                $msg = "文件上传成功!";
                $is_upload = true;
            } else {
                $msg = "文件上传失败!";
            }
        }
    }
}else{
    $msg = "请选择要上传的文件!";
}

1.首先会对mime进行检测,所以要上传图片的mime

2.检查save_name是否为空,如果为空就用文件名赋值给$file,否则用save_name

3.

 if (!is_array($file)) {
            $file = explode('.', strtolower($file));
        }

判断是否为数组,如果不是数据就以"."拆分为数组

4.判断后缀是否是白名单的.jpg、.png、.gif

 $ext = end($file);
        $allow_suffix = array('jpg','png','gif');
        if (!in_array($ext, $allow_suffix))

5.一切都过了之后就是文件重命名了

$file_name = reset($file) . '.' . $file[count($file) - 1];

取数组第一个为文件名,取数组倒数第二个为文件后缀

绕过步骤:

upload/upload.php.后面多个.但是windows环境下.会被默认去掉

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 商业网络培训靶场的发展态势综述

    我们身处的时代,网络攻击正愈演愈烈,特别是网络空间领域上升到网络战的战略高度之后,几乎每天都有网络攻击事件发生,而目前网络安全厂商竭尽全力开发的安全软硬件在保护...

    时间之外沉浮事
  • 靶场练习 | Wall (hack the box)

    声明:请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者及本公众号无关!

    贝塔安全实验室
  • 网络空间靶场发展态势综述②JCOR

    上述小节总结了美军联合参谋部联合信息作战靶场(Joint InformationOperations Range,JIOR)的大体情况,本小节将总结美军联合网络...

    时间之外沉浮事
  • 工业网络靶场技术解析①序言

    最近发生的委内瑞拉电力系统瘫痪事件表明,这是一种国家间新型战争,企图通过网络攻击行动瓦解国家运行基础,瘫痪民生设施,彻底瓦解民心,从而“手不血刃”达到目的。如果...

    时间之外沉浮事
  • 靶场发展态势⑦持续网络训练环境(PCTE)1

    随着美国对网络战的政策及顶层设计越来越清晰,美军继续构建网络任务部队(Cyber MissionForce, CMF)并将专业的网络军团制度化,美国开始着手进行...

    时间之外沉浮事
  • 靶场发展态势③美国防部赛博安全靶场(IAR/CSR)

    美国国防部在2018年依据美国白宫公布的《国家网络战略》(National CyberStrategy),制定其《国防部网络战略》(Department ofD...

    时间之外沉浮事
  • 美空军网络空间训练靶场(SIMTEX)

    上述小节总结美军联合网络空间作战靶场(Joint CyberOperation Range,JCOR)的大体发展情况,美军联合网络空间作战靶场(Joint Cy...

    时间之外沉浮事
  • NIST《网络靶场指南》浅析

    2020年6月底,NIST发布《网络靶场指南》,定义了网络靶场,并总结了网络靶场的特征及类型。网络靶场是网络、系统、工具和应用程序的交互式、模拟平台和展示。具有...

    时间之外沉浮事
  • 渗透安全测试的靶场

    新手练习测试通常需要一个测试的漏洞环境,而自己去找指定漏洞的网站显然对于新手来说有点不实际,所以今天我就来给大家提供靶场,也就是各种漏洞测试的网站环境,自行搭建

    网e渗透安全部
  • 商业网络培训靶场的形态及思考

    这是一篇讲述商业网络培训靶场应用形态及延伸思考的文章。在前文《商业网络培训靶场的发展态势综述》中,我们已经大致探讨了商业网络培训靶场当前的发展态势。这些发展态势...

    时间之外沉浮事
  • [网络安全] 十五.文件上传漏洞 (4)Upload-labs靶场及CTF题目01-10

    先来看看,这是Upload-labs靶场的20道CTF文件上传题目。虽然它只是一些题目,但其漏洞原理和利用过程仍值得我们学习。

    Eastmount
  • 网空靶场:从炒作到现实-2020

    在过去的三年中,我们已经看到了许多网空靶场技术、产品、国家的靶场计划和国际间靶场的协作整合发展。网空靶场已经变得越来越流行,并且成为了一个大家认可的细分安全领域...

    时间之外沉浮事
  • 靶场发展态势⑥欧洲典型靶场发展现状

    欧洲作为仅次于美军的经济和军事发达地区,网络空间靶场的建设也不甘落后。在美军珠玉在前的网络空间靶场建设态势下,英国、法国、瑞典、芬兰等欧洲国家先后建立了自己的网...

    时间之外沉浮事
  • Wiki | Red Team攻击思维

    一个 Red Team 攻击的生命周期,整个生命周期包括: 信息收集、攻击尝试获得权限、持久性控制、权限提升、网络信息收集、横向移动、数据分析(在这个基础上再做...

    HACK学习
  • 靶场 | 本地搭建漏洞测试平台pikachu

    Pikachu是一个带有漏洞的Web应用系统,在这里包含了常见的web安全漏洞。如果你是一个Web渗透测试学习人员且正发愁没有合适的靶场进行练习,那么Pikac...

    Timeline Sec
  • 「观点」网络靶场是建立安全文化的一种手段

    安全圈的老司机赵武前辈写了一篇“构建基于攻防实效的安全体系,有效解决通报问题”的文章,提出了从技术层面来解决企业现目前不胜其烦的安全通报问题。其观点提出:一是摸...

    时间之外沉浮事
  • 不知道有什么靶场吗?我来告诉你

    概述 开始web常见漏洞攻防讲解之前,我们给大家简单介绍一下我们课程靶场,其实整体来说比较简单,如果没有一个合理的学习方法,在渗透测试这块整体提高也比较慢,漏...

    ChaMd5安全团队
  • [红日安全]Web安全Day2 - XSS跨站实战攻防

    大家好,我们是红日安全-Web安全攻防小组。此项目是关于Web安全的系列文章分享,还包含一个HTB靶场供大家练习,我们给这个项目起了一个名字叫 Web安全实战 ...

    红日安全
  • gRPC: 如何实现文件上传 Restful API ?

    注意,grpcEntry.GwMux.HandlePath() 一定要写到 boot.Bootstrap() 之后,否则会出现 Panic。

    尹东勋

扫码关注云+社区

领取腾讯云代金券