lelelov3
W-------
-
11/03/2015
-
4
-
33 bài viết
Xin hỏi về UNION Based SQL injection
Hầu hết các tut trong và ngoài nước về sql injection hiện nay đều chỉ mang tính chất hướng dẫn thao tác. Bởi vậy, mình post thread này có đôi điều xin hỏi về bản chất đằng sau của sql injection qua một số thao tác như vậy
Bây giờ giả sử ta biết bảng có tên products của trang co loi sql injection http://site.com có 3 cột (columns) bằng cách dùng order by
http://site.com/products.php?id=1 order by 3-- (không lỗi)
http://site.com/products.php?id=1 order by 4-- (xuất hiện lỗi)
Tiếp theo, tut hướng dẫn tìm cái gọi là cột có lỗi (vunerable column) bằng:
http://site.com/products.php?id=-1 union all select 1,2,3--
Như mình biết, union all select cho phép select dữ liệu từ CSDL 2 lần từ cùng một câu truy vấn.Đến đoạn này thì mình không hiểu, Vậy ý nghĩa câu truy vấn trên là gì. VD, mình đánh vào trình duyệt:
http://site.com/products.php?id=1
Thì câu truy vấn thực chất là:
PHP code:
SELECT*FROM products WHERE id=1
Và máy chủ CSDL sẽ trả về trình duyệt dữ liệu từ bảng products tại dòng có id=1
Tiếp theo, tut hướng dẫn trang web sẽ hiện cột có lỗi, vd "2" , "3". Tại sao lại như vậy? Cũng có tut nói rằng union select trên là truy vấn chọn tất cả các cột, không biết có đúng không. Vậy bạn nào giải thích cho mình với. Mình xin cảm ơn trước.
Bây giờ giả sử ta biết bảng có tên products của trang co loi sql injection http://site.com có 3 cột (columns) bằng cách dùng order by
http://site.com/products.php?id=1 order by 3-- (không lỗi)
http://site.com/products.php?id=1 order by 4-- (xuất hiện lỗi)
Tiếp theo, tut hướng dẫn tìm cái gọi là cột có lỗi (vunerable column) bằng:
http://site.com/products.php?id=-1 union all select 1,2,3--
Như mình biết, union all select cho phép select dữ liệu từ CSDL 2 lần từ cùng một câu truy vấn.Đến đoạn này thì mình không hiểu, Vậy ý nghĩa câu truy vấn trên là gì. VD, mình đánh vào trình duyệt:
http://site.com/products.php?id=1
Thì câu truy vấn thực chất là:
PHP code:
SELECT*FROM products WHERE id=1
Và máy chủ CSDL sẽ trả về trình duyệt dữ liệu từ bảng products tại dòng có id=1
Tiếp theo, tut hướng dẫn trang web sẽ hiện cột có lỗi, vd "2" , "3". Tại sao lại như vậy? Cũng có tut nói rằng union select trên là truy vấn chọn tất cả các cột, không biết có đúng không. Vậy bạn nào giải thích cho mình với. Mình xin cảm ơn trước.
Chỉnh sửa lần cuối bởi người điều hành: