You are on page 1of 9

Lab 10 – SQL Injection

1. Giới thiệu
SQL Injection không còn là một khái niệm quá mới nhưng nó vẫn đang là
một trong những kiểu tấn công mạng phổ biến hiện nay .SQL Injection là
một trong những phương thức hack bằng cách chèn các mã SQL
query/command vào input trước khi chuyển cho ứng dụng web xử lí.
Attackers có thể login mà không cần username và password, remote
execution, dump data và lấy thông tin truy cập của hệ quản trị cơ sở dữ liêu
như: MSSQL, MYSQL

2. Các bước thực hiện


- Mở xampp và chạy như các bài lab trước
- Ta vào 192.168.0.101/DVWA login với
user: admin . Pass: password
- Chon DVWA security . Chọn LOW và Submit
- Chọn SQL Injection
- Tại đây ta ấn vào View Source để xem qua về Source Code
- Tại đây ta có thể để ý thấy rằng khi ta nhập một mã id bất kỳ nào đó thì
ta sẽ nhận được đó là first_name và last_name. Ta thử gõ một ký tự bất kì

như dấu ‘ thì sẽ bị báo lỗi syntax.

Vậy ta sẽ thử gõ 1 rồi submit


Ta sẽ được trả về kết quả như hình trên. Nếu gõ thử thứ tự id từ 1-6 thì ta
sẽ chỉ nhận được KQ của 5 id đầu (1-5) còn từ id thứ 6 trở đi sẽ không trả
về kết quả gì. Vậy thì có thể chỉ có tối đa 5 users có trong đây.

Nếu ta thử gõ ‘ or 1=1# . Thì sẽ nhận được kết quả là 5 users. Dấu “#”
ở đây có ý nghĩa là chỉ cho My SQL server biết đã hết dòng query, mọi
thứ còn lại sau "#" sẽ bị bỏ qua.
- Ngoài ra ta cũng có thể gõ thử: %' or 2=2 union select null, version() #
và submit
Gõ 0’ or 0=0 union SELECT user, password FROM users#, ta sẽ nhận được
KQ là ngoài first_name và last_name ra sẽ nhận được cả password của users
đã được encrypt bằng mã hash. Để có thể lấy được password hoàn chỉnh của
các users này thì đơn giản ta chỉ cần decrypt các mã này bằng một số web
online trên mạng.
- Gõ: %' and 1=0 union select null, concat(table_name,0x0a,column_name)
from information_schema.columns where table_name = 'users' #

Ta sẽ nhận được tên của các cột có trong MySQL.


MEDIUM

Ở phần này ta không thể lấy thông tin dễ dàng như ở mức Low được mà
sẽ cần nhờ hỗ trợ của Burp Suit để giúp ta khai thác lỗ hổng.
Đầu tiên bật HTTP proxy và lấy port 8080, ngay sau đấy ta có thể kết
nối được với Burp Suit. Thử lấy id = 1 và ấn submit
Và ta có thể thử các lệnh như level LOW để khai thác SQL như:
1 or 0=0# sẽ lấy được first_name và last_name.

Tiếp theo thử lấy cả password user qua câu lệnh


1 or 1=1 union select user, password from users
Và kết quả là ta có được tên users cũng như password đã được encrypt.
Làm tương tự như Level Low đem những mã này decrypt trên những
web online ta sẽ thấy được password hoàn chỉnh của từng user.

3. Kinh nghiệm rút ra


 Không bao giờ được tin những input mà người dùng nhập vào
 Giới hạn người dùng truy cập vào database, chỉ những người được
phép mới có quyền truy cập
 Không tiết lộ thông tin không cần thiết đối với người ngoài
 Luôn có chu kỳ theo dõi các lệnh SQL do người dùng nhập vào xem
có sử dụng những lệnh SQL giả mạo để khai thác lỗ hổng không

You might also like