zoukankan      html  css  js  c++  java
  • bWAPP----HTML Injection

    HTML Injection - Stored (Blog)

    界面

      1 <div id="main">
      2 
      3     <h1>HTML Injection - Stored (Blog)</h1>
      4 
      5     <form action="<?php echo($_SERVER["SCRIPT_NAME"]);?>" method="POST">
      6 
      7     <table>
      8 
      9             <tr>
     10 
     11                 <td colspan="6"><p><textarea name="entry" id="entry" cols="80" rows="3"></textarea></p></td>
     12 
     13             </tr>
     14 
     15             <tr>
     16 
     17                 <td width="79" align="left">
     18 
     19                     <button type="submit" name="blog" value="submit">Submit</button>
     20 
     21                 </td>
     22 
     23                 <td width="85" align="center">
     24 
     25                     <label for="entry_add">Add:</label>
     26                     <input type="checkbox" id="entry_add" name="entry_add" value="" checked="on">
     27 
     28                 </td>
     29 
     30                 <td width="100" align="center">
     31 
     32                     <label for="entry_all">Show all:</label>
     33                     <input type="checkbox" id="entry_all" name="entry_all" value="">
     34 
     35                 </td>
     36 
     37                 <td width="106" align="center">
     38 
     39                     <label for="entry_delete">Delete:</label>
     40                     <input type="checkbox" id="entry_delete" name="entry_delete" value="">
     41 
     42                 </td>
     43 
     44                 <td width="7"></td>
     45 
     46                 <td align="left"><?php echo $message;?></td>
     47 
     48             </tr>
     49 
     50     </table>
     51 
     52     </form>
     53 
     54     <br />
     55 
     56     <table id="table_yellow">
     57 
     58         <tr height="30" bgcolor="#ffb717" align="center">
     59 
     60             <td width="20">#</td>
     61             <td width="100"><b>Owner</b></td>
     62             <td width="100"><b>Date</b></td>
     63             <td width="445"><b>Entry</b></td>
     64 
     65         </tr>
     66 
    // 上面是html,下面开始是PHP源码
    67 <?php 68 69 // Selects all the records 70 71 $entry_all = isset($_POST["entry_all"]) ? 1 : 0; 72 73 if($entry_all == false) 74 { 75 76 $sql = "SELECT * FROM blog WHERE owner = '" . $_SESSION["login"] . "'"; 77 78 } 79 80 else 81 { 82 83 $sql = "SELECT * FROM blog"; 84 85 } 86 87 $recordset = $link->query($sql); 88 89 if(!$recordset) 90 { 91 92 // die("Error: " . $link->connect_error . "<br /><br />"); 93 94 ?> 95 <tr height="50"> 96 97 <td colspan="4" width="665"><?php die("Error: " . $link->error);?></td> 98 <!-- 99 <td></td> 100 <td></td> 101 <td></td> 102 --> 103 104 </tr> 105 106 <?php 107 108 } 109 110 while($row = $recordset->fetch_object()) 111 { 112 113 if($_COOKIE["security_level"] == "1" or $_COOKIE["security_level"] == "2") 114 { 115 116 ?> 117 <tr height="40"> 118 119 <td align="center"><?php echo $row->id; ?></td> 120 <td><?php echo $row->owner; ?></td> 121 <td><?php echo $row->date; ?></td> 122 <td><?php echo xss_check_3($row->entry); ?></td> 123 124 </tr> 125 126 <?php 127 128 } 129 130 else 131 { 132 133 ?> 134 <tr height="40"> 135 136 <td align="center"><?php echo $row->id; ?></td> 137 <td><?php echo $row->owner; ?></td> 138 <td><?php echo $row->date; ?></td> 139 <td><?php echo $row->entry; ?></td> 140 141 </tr> 142 143 <?php 144 145 } 146 147 } 148 149 $recordset->close(); 150 151 $link->close(); 152 153 ?> 154 </table> 155 156 </div>

    感觉防护代码这有点问题,我没看明白

     1 function htmli($data)
     2 {
     3 
     4     include("connect_i.php");                  //链接数据库
     5 
     6     switch($_COOKIE["security_level"])        //检测级别在cookie里
     7     {
     8 
     9         case "0" :
    10 
    11             $data = sqli_check_3($link, $data);
    12             break;
    13 
    14         case "1" :
    15 
    16             $data = sqli_check_3($link, $data);
    17             // $data = xss_check_4($data);
    18             break;
    19 
    20         case "2" :
    21 
    22             $data = sqli_check_3($link, $data);
    23             // $data = xss_check_3($data);
    24             break;
    25 
    26         default :
    27 
    28             $data = sqli_check_3($link, $data);
    29             break;
    30 
    31     }

    无论case是几,执行的都是

    sqli_check_3()进行过滤

    sqli_check_3()的定义是

    应该把xss的防御加在这里

    1 function sqli_check_3($link, $data)
    2 {
    3    
    4     return mysqli_real_escape_string($link, $data);
    5     
    6 }

    mysql_real_escape_string() 函数转义 SQL 语句中使用的字符串中的特殊字符。

    下列字符受影响:

    • x00
    • '
    • "
    • x1a

    如果成功,则该函数返回被转义的字符串。如果失败,则返回 false。

    1.low

    级别同时不进行保护

    2.medium

    xss_check_4进行防xss保护
    函数功能为
    function xss_check_4($data)
    {
     
     // addslashes - returns a string with backslashes before characters that need to be quoted in database queries etc.
     // These characters are single quote ('), double quote ("), backslash () and NUL (the NULL byte).
     // Do NOT use this for XSS or HTML validations!!!
     
     return addslashes($data);
     
    }

    在预定义字符前加反斜杠

    预定义字符是:

    • 单引号(')
    • 双引号(")
    • 反斜杠()
    • NULL

    3.high

    xss_check_3功能
     
     1 function xss_check_3($data, $encoding = "UTF-8")
     2 {
     3 
     4     // htmlspecialchars - converts special characters to HTML entities    
     5     // '&' (ampersand) becomes '&amp;' 
     6     // '"' (double quote) becomes '&quot;' when ENT_NOQUOTES is not set
     7     // "'" (single quote) becomes '&#039;' (or &apos;) only when ENT_QUOTES is set
     8     // '<' (less than) becomes '&lt;'
     9     // '>' (greater than) becomes '&gt;'  
    10     
    11     return htmlspecialchars($data, ENT_QUOTES, $encoding);
    12        
    13 }

     htmlspecialchars()功能,将部分字符转化为html字符

  • 相关阅读:
    即将到来的Android N,将具备这些新特性
    刚挣钱的程序猿同学该怎样花钱?
    Swift函数
    MVC
    css3硬件加速
    node+mongoDB+express项目需求解释
    柯里化
    web安全
    缓存机制详解
    nodejs --- crypto实现加密(转)
  • 原文地址:https://www.cnblogs.com/hongren/p/7151935.html
Copyright © 2011-2022 走看看