zoukankan      html  css  js  c++  java
  • (未完)经典Web漏洞实战演练靶场笔记

    记录下自己写的经典Web漏洞靶场的write up,包括了大部分的经典Web漏洞实战场景,做个笔记。

    0x01 任意文件下载漏洞

    if(!empty($_GET['filename'])){
            $filename = $_GET['filename'];
            $fileinfo = pathinfo($filename);
            header('Content-type: application/x-'.$fileinfo['extension']);
            header('Content-Disposition: attachment; filename='.$fileinfo['basename']);
            header('Content-Length: '.filesize($filename));
            readfile($filename);
    exit();
    
    }

    这里对filename参数的值进行下载但是没有任何过滤,造成任意文件下载,如果要下载文件,我们可以使用绝对路径或者相对路径

    以下载my.ini为例子

    绝对路径:

    相对路径:

    0x02 任意文件读取漏洞

    <?php
    if(isset($_GET['tpl'])){
    
    echo "<pre>";
    @readfile($_GET['tpl']);
    echo "</pre>";
    }
    ?> 

    没做任何验证就读取文件。

    http://www.hack_demo.com/hack_2.php?tpl=E:phpstudyMySQLmy.ini

    0x03 任意文件删除漏洞(慎点~~)

     这关是对传入删除函数的参数没有过滤,导致任意文件删除

    <?php
    if(isset($_GET['filename'])){
    $filename = addslashes($_GET['filename']);//没过滤.
     if(file_exists("file/".$filename))@unlink("file/".$filename);
        echo "<script>alert("文件删除成功!");location.reload();</script>";
    }
    ?> 

    0x04 目录遍历漏洞

    未对dir参数进行检查,直接显示dir参数指定的目录下的所有文件,造成目录遍历漏洞。

    <?php
    header("Content-Type:text/html; charset=utf-8"); 
    if (isset($_GET['dir'])){ //设置文件目录 
    $basedir=$_GET['dir']; 
    }else{ 
    $basedir = './file/'; 
    } 
    $auto = 1; 
    checkdir($basedir); 
    function checkdir($basedir){ 
    if ($dh = opendir($basedir)) { 
      while (($file = readdir($dh)) !== false) { 
       if ($file != '.' && $file != '..'){ 
        if (!is_dir($basedir."/".$file)) { 
         echo "文件名称: $basedir/$file "." <br>"; 
        }else{ 
         $dirname = $basedir."/".$file; 
         checkdir($dirname); 
        } 
       } 
      } 
    closedir($dh); 
    } 
    }
    ?> 
    http://www.hack_demo.com/hack_4.php?dir=..

     0x05 Cookie欺骗漏洞

    这里只是判断cookie,cookie都是可以伪造的

    这里只要$_COOKIE['user'] == md5($password)即可

    <?php
    error_reporting(0);
    header("Content-Type:text/html; charset=utf-8"); 
    $password = 'adminadmin';
    if($_COOKIE['user'] == md5($password)) { ob_start(); echo "您回来啦管理员!"; ob_end_flush(); }else{ $cookietime = time() + 24 * 3600; $passt = 'user'; setcookie('user',md5($passt),$cookietime); echo "您不是管理员!"; } ?>

     0x06 URl跳转漏洞

    这里对跳转的地址没有任何过滤,导致任意url跳转

    <?php
    $url=$_GET['jumpto'];
    header("Location: $url");
    ?> 

     0x07 任意密码修改漏洞

    http://www.hack_demo.com/hack_7.php

    说白了 就是修改密码的时候判断用户标识太简单,比如这里修改密码的时候只是判断提交的id值,然后根据提交的id值去修改数据库中对应id的用户的密码。

    <?php
    $Id = isset($_POST['Id'])?$_POST['Id']:'';
        $sql = "update `user` set `password`= '$password' where Id = '$Id'";
        ?> 

    这里修改密码 ,我们填入了然后抓包

    id改为1  放包

    静有所思,思有所想

    ------------------------------------------------------------------------------------

    联系 Qq/Wechat:779783493
  • 相关阅读:
    反应堆模式
    ABP领域层——仓储(Repositories)
    如何使用ASP.NET Web API OData在Oracle中使用Entity Framework 6.x Code-First方式开发 OData V4 Service
    dapper的Dapper-Extensions用法(一)
    VisualStudio 怎么使用Visual Leak Detector
    Visual Studio Code开发TypeScript
    Topshelf创建Windows服务
    ENode框架初始化
    知已者明(转)
    配置静态监听解决ORA-12514错误的案例(转)
  • 原文地址:https://www.cnblogs.com/-qing-/p/11062092.html
Copyright © 2011-2022 走看看