zoukankan      html  css  js  c++  java
  • bWAPP----OS Command Injection

    OS Command Injection

    界面:

    给一个域名,它帮你返回DNS

    代码:

     1 <div id="main">
     2 
     3     <h1>OS Command Injection</h1>
     4 
     5     <form action="<?php echo($_SERVER["SCRIPT_NAME"]);?>" method="POST">
     6 
     7         <p>
     8 
     9         <label for="target">DNS lookup:</label>
    10         <input type="text" id="target" name="target" value="www.nsa.gov">
    11 
    12         <button type="submit" name="form" value="submit">Lookup</button>
    13 
    14         </p>
    15 
    16     </form>
    17     <?php
    18 
    19     if(isset($_POST["target"]))                                                      //获取域名,如果存在输入
    20     {
    21 
    22         $target = $_POST["target"];
    23 
    24         if($target == "")                                                           //如果域名为空
    25         {
    26 
    27             echo "<font color="red">Enter a domain name...</font>";              //请输入域名
    28 
    29         }
    30 
    31         else
    32         {
    33 
    34             echo "<p align="left">" . shell_exec("nslookup  " . commandi($target)) . "</p>";   
    35 
    36         }
    37 
    38     }
    39 
    40     ?>
    41 
    42 </div>

    shell_exec — 通过 shell 环境执行命令,并且将完整的输出以字符串的方式返回。

     

     

    防御部分

     1 function commandi($data)
     2 {
     3 
     4     switch($_COOKIE["security_level"])
     5     {
     6 
     7         case "0" :
     8 
     9             $data = no_check($data);
    10             break;
    11 
    12         case "1" :
    13 
    14             $data = commandi_check_1($data);
    15             break;
    16 
    17         case "2" :
    18 
    19             $data = commandi_check_2($data);
    20             break;
    21 
    22         default :
    23 
    24             $data = no_check($data);
    25             break;
    26 
    27     }
    28 
    29     return $data;
    30 
    31 }
    32 
    33 ?>

    1.low

    low级别没有过滤

    加一个;就能实现恶意

     

    2.medium

    1 function commandi_check_1($data)
    2 {
    3     
    4     $input = str_replace("&", "", $data);
    5     $input = str_replace(";", "", $input);
    6     
    7     return $input;
    8     
    9 }

    过滤了&和;将他们替换为空

    用  |  可以绕过

    3.high

    1 function commandi_check_2($data)
    2 {
    3    
    4     return escapeshellcmd($data);
    5     
    6 }

    escapeshellcmd函数功能:

    反斜线()会在以下字符之前插入: &#;`|*?~<>^()[]{}$, x0AxFF'" 仅在不配对儿的时候被转义。 在 Windows 平台上,所有这些字符以及 %! 字符都会被空格代替。

  • 相关阅读:
    Tensorflow Tutorial 2: image classifier using convolutional neural network Part-1(译)
    TensorFlow Tutorial: Practical TensorFlow lesson for quick learners
    TensorFlow Tutorial: Practical TensorFlow lesson for quick learners
    Builder Pattern(译)
    Mysql锁机制
    Monitorenter
    非静态内部类
    ConcurrentModificationException
    Http2.0协议
    Docker化 springboot项目
  • 原文地址:https://www.cnblogs.com/hongren/p/7168946.html
Copyright © 2011-2022 走看看