(未完)经典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
原文地址:https://www.cnblogs.com/-qing-/p/11062092.html