Trang chủ
»
SQL Injection
» SQL injection lab 1 [khái niệm+checksite sqli] - for newbie
7 thg 7, 2012
SQL injection lab 1 [khái niệm+checksite sqli] - for newbie
khái niệm SQL injection:1. Khái niệm: SQL Injection là một trong những kiểu hack web đang dần trở nên phổ biến hiện nay, theo thống kê thì khoảng 75% hacker sử dụng kĩ thuật này để chiếm quyền điều khiển của hệ thống. Bằng cách inject các mã SQL query/command vào input trước khi chuyển cho ứng dụng web xử lí, bạn có thể login mà không cần username và password, remote execution, dump data và lấy root của SQL server. Công cụ dùng để tấn công là một trình duyệt web bất kì, chẳng hạn như Internet Explorer, Netscape, Lynx, Firefox,...
2.kiến thức cần biết:
-dấu nháy đơn (‘): dấu này trong ngôn ngữ SQL dùng để “gói” chuỗi. Ta thường thêm nó vào sau tham số kiểu số trên chuỗi truy vấn để kiểm tra có lỗi hay không. Nguyên nhân là do không kiểm tra kiểu dữ liệu.
- dấu thăng (#) và dấu (–): các dấu này để đánh dấu chú thích, nghĩa là những kí tự đứng sau một trong hai dấu này trên cùng một dòng sẽ được xem là chú thích được bỏ qua khi thực hiện truy vấn.
- dấu ( ; ): dùng để kết thúc một truy vấn và tất nhiên sau nó là bắt đầu một truy vấn khác. Đôi khi ta dùng union để nối hai câu truy vấn.
kiến thức database (CSDL) và ngôn ngữ thiết kế website (PHP, ASP).
MsAccess: thường dành cho các website tin tức quy mô nhỏ, sử dụng ngôn ngữ ASP để thiết kế.
MSSQL: dùng cho website có quy mô lớn, sử dụng ngôn ngữ ASP, ASPX (ASP.Net) để thiết kế.
MySQL: tất cả các website có thể dùng, sử dụng ngôn ngữ PHP để thiết kế (MySQL và PHP là 2 anh em song sinh , chúng luôn đi kèm với nhau ).
Oracle: tương tự như MySQL Db2: dùng cho các hệ thông website ngân hàng các hệ thống cần chế độ bảo mật rất cao!.
2.kiến thức cần biết:
-dấu nháy đơn (‘): dấu này trong ngôn ngữ SQL dùng để “gói” chuỗi. Ta thường thêm nó vào sau tham số kiểu số trên chuỗi truy vấn để kiểm tra có lỗi hay không. Nguyên nhân là do không kiểm tra kiểu dữ liệu.
- dấu thăng (#) và dấu (–): các dấu này để đánh dấu chú thích, nghĩa là những kí tự đứng sau một trong hai dấu này trên cùng một dòng sẽ được xem là chú thích được bỏ qua khi thực hiện truy vấn.
- dấu ( ; ): dùng để kết thúc một truy vấn và tất nhiên sau nó là bắt đầu một truy vấn khác. Đôi khi ta dùng union để nối hai câu truy vấn.
kiến thức database (CSDL) và ngôn ngữ thiết kế website (PHP, ASP).
MsAccess: thường dành cho các website tin tức quy mô nhỏ, sử dụng ngôn ngữ ASP để thiết kế.
MSSQL: dùng cho website có quy mô lớn, sử dụng ngôn ngữ ASP, ASPX (ASP.Net) để thiết kế.
MySQL: tất cả các website có thể dùng, sử dụng ngôn ngữ PHP để thiết kế (MySQL và PHP là 2 anh em song sinh , chúng luôn đi kèm với nhau ).
Oracle: tương tự như MySQL Db2: dùng cho các hệ thông website ngân hàng các hệ thống cần chế độ bảo mật rất cao!.
Bình thường để hack 1 site lỗi SQL injection bao gồm các bước :
B 1 : Check
B 2 : Order By (Đếm số cột liên quan trong câu query mà URL của site đó chạy )
B3 : Union Select
a) Bạn có thể search các trang web cho phép submit data ở bất kì một search-engine nào trên mạng, chẳng hạn như các trang login, search, feedback hoặc qua cách truyền tham số (Dork) VD: chitiet.php?id=21 , detail.asp?id=6,...
b) Khi tìm kiếm được mục tiêu cần tấn công chúng ta cần phải xác định được hệ quản trị CSDL của website đó ( đây là bước quan trọng) bằng cách nhìn tổng thẻ website, ngôn ngữ thiết kế, OS của server qua quá trình thăm dò. Ở đây tôi xin thống kê các database thường gặp đi cùng với ngôn ngữ thiết kế website.
c) khi xác định được mục tiêu thì các bạn cần kiểm tra các lỗi xem có khả năng tấn công dựa vào nó được không. Các kĩ thuật khai thác lỗi như sau:
· -Với các tham số được truyền vào VD: index.php?id=21 , index.asp?id=6,.. thì chúng ta chỉ cần thêm các kí tự dấu nháy đơn ('), dấu nháy kép ("), phần trăm 27 (%27), 00 phần trăm (00%) vào sau id để kiểm tra nếu nó hiện ra lỗi hoặc không hiện ra 1 cái gì (khác hoàn toàn với lúc ban đầu thì 90% bạn có khả năng khai thác được lỗi này - Sẽ trình bày rõ ở phần sau).
-Với các ô submit thông tin như tìm kiếm, login, contact, request,.. các bạn cũng làm tương tự.
Ví Dụ:
http://ww.site.com/index.php?id=1 (giả sử đây là site bị lỗi SQL injection)
cú pháp
trạng thái
http://ww.site.com/index.php?id=1' lỗi
--------
http://ww.site.com/index.php?id=1" lỗi
--------
http://ww.site.com/index.php?id=1%27 lỗi
--------
http://ww.site.com/index.php?id=1 and 1=0 lỗi
http://ww.site.com/index.php?id=1 and 1=1 không lỗi
share 1 số kinh nghiệm cho ae:
1. Nếu bạn check lỗi SQL Inj ở 1 website mà bạn không thấy lỗi hiện ra thì đừng nên bỏ qua chúng vì nó có thể bị admin làm cho ẩn đi.
2. Nếu không ra số đẹp khi Union thì hãy view Scoure nó lên và tìm, có thể nó ở trong đó.
3. Thay vì thêm ' vào sau id để kiểm tra thì các bạn có thể sử dụng kĩ thuật
sử dụng các phép toán: VD: and 1=1 hiện ra site , and 1=0 hiện ra site báo lỗi =>> Site đã bị dính sql inj
sử dụng các phép toán kiểu true fales: VD: 2>3 ; 2<3
1--1
BETWEEN 1 AND 3
'b' BETWEEN 'a' AND 'c'
2 IN (0,1,2)
CASA WHEN 1>0 THEN 1 END
' uuu' = 'uuu'
ISNULL(NULL)
ISNULL(COT(0))
1 IS NOT NULL
NULL IS NULL
Nếu tham số (id) của trang hiện tại là 3, tham số trang sau là 2, nếu ta dùng 3-1 , kết quả trả về là nội dung của trang có id=2 thì 99% là site này dính lỗi SQL Inj
B 1 : Check
B 2 : Order By (Đếm số cột liên quan trong câu query mà URL của site đó chạy )
B3 : Union Select
a) Bạn có thể search các trang web cho phép submit data ở bất kì một search-engine nào trên mạng, chẳng hạn như các trang login, search, feedback hoặc qua cách truyền tham số (Dork) VD: chitiet.php?id=21 , detail.asp?id=6,...
b) Khi tìm kiếm được mục tiêu cần tấn công chúng ta cần phải xác định được hệ quản trị CSDL của website đó ( đây là bước quan trọng) bằng cách nhìn tổng thẻ website, ngôn ngữ thiết kế, OS của server qua quá trình thăm dò. Ở đây tôi xin thống kê các database thường gặp đi cùng với ngôn ngữ thiết kế website.
c) khi xác định được mục tiêu thì các bạn cần kiểm tra các lỗi xem có khả năng tấn công dựa vào nó được không. Các kĩ thuật khai thác lỗi như sau:
· -Với các tham số được truyền vào VD: index.php?id=21 , index.asp?id=6,.. thì chúng ta chỉ cần thêm các kí tự dấu nháy đơn ('), dấu nháy kép ("), phần trăm 27 (%27), 00 phần trăm (00%) vào sau id để kiểm tra nếu nó hiện ra lỗi hoặc không hiện ra 1 cái gì (khác hoàn toàn với lúc ban đầu thì 90% bạn có khả năng khai thác được lỗi này - Sẽ trình bày rõ ở phần sau).
-Với các ô submit thông tin như tìm kiếm, login, contact, request,.. các bạn cũng làm tương tự.
Ví Dụ:
http://ww.site.com/index.php?id=1 (giả sử đây là site bị lỗi SQL injection)
cú pháp
trạng thái
http://ww.site.com/index.php?id=1' lỗi
--------
http://ww.site.com/index.php?id=1" lỗi
--------
http://ww.site.com/index.php?id=1%27 lỗi
--------
http://ww.site.com/index.php?id=1 and 1=0 lỗi
http://ww.site.com/index.php?id=1 and 1=1 không lỗi
share 1 số kinh nghiệm cho ae:
1. Nếu bạn check lỗi SQL Inj ở 1 website mà bạn không thấy lỗi hiện ra thì đừng nên bỏ qua chúng vì nó có thể bị admin làm cho ẩn đi.
2. Nếu không ra số đẹp khi Union thì hãy view Scoure nó lên và tìm, có thể nó ở trong đó.
3. Thay vì thêm ' vào sau id để kiểm tra thì các bạn có thể sử dụng kĩ thuật
sử dụng các phép toán: VD: and 1=1 hiện ra site , and 1=0 hiện ra site báo lỗi =>> Site đã bị dính sql inj
sử dụng các phép toán kiểu true fales: VD: 2>3 ; 2<3
1--1
BETWEEN 1 AND 3
'b' BETWEEN 'a' AND 'c'
2 IN (0,1,2)
CASA WHEN 1>0 THEN 1 END
' uuu' = 'uuu'
ISNULL(NULL)
ISNULL(COT(0))
1 IS NOT NULL
NULL IS NULL
Nếu tham số (id) của trang hiện tại là 3, tham số trang sau là 2, nếu ta dùng 3-1 , kết quả trả về là nội dung của trang có id=2 thì 99% là site này dính lỗi SQL Inj
Không có nhận xét nào:
Đăng nhận xét