Hề lố xin chào mọi người lại là mình với series phá đảo Cookie Arena đây !! Bài viết lần này sẽ về 2 lab cùng chủ đề: Simple SQL Injection Bypass Login và SQL Injection bypass login nhé!!
Trước khi nhảy vào làm chúng ta cần điểm lại kiến thức về SQL Injection chứ nhỉ ehehe
Tham khảo từ bài viết của anh Hazy
Lỗ hổng SQL Injection là một kỹ thuật tấn công phổ biến trên các ứng dụng web, trong đó kẻ tấn công chèn các câu lệnh SQL độc hại vào các trường nhập liệu của ứng dụng, để có thể thực thi các lệnh SQL không mong muốn hoặc lấy thông tin từ cơ sở dữ liệu.
Kẻ tấn công thường sử dụng các chuỗi ký tự đặc biệt và câu lệnh SQL để lừa ứng dụng Web và hệ thống quản trị cơ sở dữ liệu (DBMS) của nó. Khi được chấp nhận, các chuỗi này có thể gây ra các tác động xấu, bao gồm:
- Thực thi các lệnh SQL bất hợp pháp, như chèn thêm, cập nhật hoặc xóa dữ liệu trong cơ sở dữ liệu.
- Truy cập và đánh cắp dữ liệu nhạy cảm từ cơ sở dữ liệu, như thông tin tài khoản người dùng hoặc thông tin thẻ tín dụng.
- Thực thi lệnh hệ thống để tạo ra mã độc, Web Shell nhằm kiểm soát hệ thống
Mặc dù trong bài viết trên đã hint sẵn đáp án để giải 2 lab này, cơ mà đi từng bước một để hiểu rõ vấn đề vẫn tốt hơn chứ ha!!
Mình sẽ giải quyết 2 bài lab này bằng tay - manual testing nhé
Hãy bắt đầu với lab SQL Injection bypass login
Trong mô tả, ta biết được phần đăng nhập của bài lab dính SQLi, với câu truy vấn SQL là
SELECT * FROM users WHERE username='$username' AND password='$password'
Mục tiêu của chúng ta là phải khai thác lỗi SQLi và đăng nhập vào tài khoản admin
Khởi động lab và vào giao diện đăng nhập
Kiểm tra SQLi với dấu nháy đơn '
(lí do tại sao là dấu nháy đơn đã được anh Hazy giải thích trong bài viết này nha) cả 2 trường username và password, server đều trả về lỗi Internal Server Error do câu truy vấn bị lỗi
Thêm 2 dấu trừ --
vào sau dấu nháy đơn, web trả về thông báo lỗi sai tên đăng nhập/mật khẩu ( do --
là cú pháp comment của SQL)
Trong các trường hợp thực tế thì các Gà nên kiểm tra từng input một thay vì thử cả 2 một lúc giống mình để dễ xác định vị trí dính lỗ hổng SQLi hơn nhé
Hãy thử đăng nhập tài khoản admin
với phần mật khẩu là ' OR 1=1--
Câu truy vấn sẽ có dạng
SELECT * FROM users WHERE username='admin' AND password=' ' OR 1=1-- '
phần AND
kiểm tra điều kiện password sẽ luôn đúng, và dấu nháy đơn cuối câu truy vấn đã bị comment loại bỏ làm cho câu truy vấn trên rất chuẩn chỉ về mặt ngữ pháp
Từ đó ta đăng nhập được vào tài khoản admin và flag đã được trả về
Quá dễ!! Mang lab tiếp theo đến đây
Simple SQL Injection Bypass Login
Tại mô tả, ta có thêm thông tin đăng nhập guest:guest
và mục tiêu của bài lab vẫn là là vào được account của admin
.
Khởi động lab
Giao diện đăng nhập
Đăng nhập với tài khoản guest:guest
, một thông báo sẽ hiện lên như này
Nếu đăng nhập sai server sẽ trả về thông báo wrong
Vì đã biết được bài lab này dính lỗi SQLi => Ta sẽ khai thác lỗi này để vào được tài khoản admin
Kiểm tra SQLi trong trường password tại chức năng đăng nhập bằng kí tự nháy đơn '
Hiện thông báo lỗi, suy ra ta không thể khai thác SQLi bằng kí tự nháy đơn được
Thử lại với kí tự nháy kép "
và server trả về một màn hình lỗi Internal Server Error
=> câu truy vấn SQL đính kèm dữ liệu nhập vào của chúng ta đã bị lỗi, khiến cho server không hiểu và gây ra lỗi Internal Server Error
Kiểm tra lại lần nữa, cũng với kí tự nháy kép "
nhưng thêm 2 dấu trừ --
vào đằng sau
Server lại trả về thông báo
wrong
=> 2 dấu trừ đã comment đoạn sau của câu truy vấn
Từ đó, thực hiện tấn công SQLi để đăng nhập vào tài khoản admin
bằng cách điền vào trường password giá trị " OR 1=1 --
Lúc đó câu truy vấn sẽ có dạng SELECT * FROM users WHERE userid="admin" AND password="" OR 1=1 --"
=> phần AND
của câu truy vấn trên luôn đúng => có thể đăng nhập được vào tài khoản admin
(theo lý thuyết là thế)
Nhưng mà cái thông báo trả về nó lạ lắm Vậy là ta không thể thực hiện SQLi vào tài khoản
admin
qua password giống lab bên trên được rồi
Còn cách nào khác không nhỉ?
Sẽ thế nào nếu như ta tấn công qua trường userid và bỏ qua phần kiểm tra password? Như này chẳng hạn
Pass nhập bừa đó đừng để ý

Vàaaaaaaa
Vậy là chúng ta đã cùng giải xong 2 lab chủ đề SQLi (rất dễ ), nhưng mà trên nền tảng Cookie Arena còn rất nhiều lab SQLi khác cũng thú vị không kém đó!!! Nếu gặp thắc mắc gì trong quá trình làm các Gà có thể comment xuống dưới để cùng thảo luận nhé! Iu cả nhà