bWAPP----SQL Injection (GET/Search)

SQL Injection (GET/Search)

輸入單引號php

報錯,在%'附近出錯,猜想參數被 '%  %'這種形式包裹,沒有任何過濾,直接帶入了數據庫查詢mysql

 

輸入order by查詢列sql

union select 肯定顯示位數據庫

而後分別查詢用戶,數據庫名,數據庫版本fetch

 

根據數據庫版本知道能夠經過information_schema表查詢信息,查詢table_name,從information_schema.tablesspa

 

查詢當前數據庫的tablename3d

查詢users表的列code

 

查詢字段的內容orm

 

貼上源碼blog

 1 <?php
 2 if(isset($_GET["title"]))
 3 {
 4 
 5     $title = $_GET["title"];
 6 
 7     $sql = "SELECT * FROM movies WHERE title LIKE '%" . sqli($title) . "%'";
 8 
 9     $recordset = mysql_query($sql, $link);
10 
11     if(!$recordset)
12     {
13 
14         // die("Error: " . mysql_error());
15 
16 ?>
17 
18         <tr height="50">
19 
20             <td colspan="5" width="580"><?php die("Error: " . mysql_error()); ?></td>
21             <!--
22             <td></td>
23             <td></td>
24             <td></td>
25             <td></td>
26             -->
27 
28         </tr>
29 <?php
30 
31     }
32 
33     if(mysql_num_rows($recordset) != 0)
34     {
35 
36         while($row = mysql_fetch_array($recordset))         
37         {
38 
39             // print_r($row);
40 
41 ?>

 

 

防護代碼

function sqli($data)
{

    switch($_COOKIE["security_level"])
    {

        case "0" :

            $data = no_check($data);
            break;

        case "1" :

            $data = sqli_check_1($data);
            break;

        case "2" :

            $data = sqli_check_2($data);
            break;

        default :

            $data = no_check($data);
            break;

low

沒有過濾

 

 

medium

function sqli_check_1($data)
{
 
 return addslashes($data);
 

 


 

high

1 function sqli_check_2($data)
2 {
3    
4     return mysql_real_escape_string($data);
5     
6 }
相關文章
相關標籤/搜索