SQL injection - Blind¶
Estimated time to read: 4 minutes
May 03, 2023
Tài nguyên và link challenge¶
Tài nguyên của challenge này tại https://www.root-me.org/en/Challenges/Web-Server/SQL-injection-blind
Link challenge này tại http://challenge01.root-me.org/web-serveur/ch10/
Tổng quan¶
Trong challenge này, mục tiêu của ta là lấy password admin.
Kịch bản tấn công¶
Bước 1: Kiểm tra website¶
Challenge này cung cấp cho ta 1 website login. Ta thử login với account admin/admin thì hiện thông báo Error : no such user/password
Ta thử tiêm payload vào url nhằm thử tấn công bằng HTTP GET METHOD thì không nhận thấy lỗi từ website bài này có thể dùng HTTP POST METHOD. Mà đã đùng HTTP GET METHOD thì bật Burp Suite thui nào ::v
Bước 2: Khai thác website bằng Burp Suite và sqlmap¶
Khi thử tiêm đơn giản admin = admin'or'1'='1'--
và password=admin
thì ngay lập tức hệ thống phản hồi thành user1
Tức là đẫ bị filter :3.
Rồi, ta tiêm tiếp admin = admin'or'1'='1'
và password=admin
thì nhận được lỗi.
Và thông qua lỗi này ta biết được hệ quản trị cơ sở dữ liệu đang được dùng là SQLite3
. Mấu chốt ở đây nè, trên SQLite thì không thể liệt kê cơ sở dữ liệu (csdl) nếu chúng ta dùng sqlmap mà chỉ liệt kê được các bảng trong csdl thôi.
Well, ta sẽ dùng python sqlmap.py -r ~/Desktop/test/request.txt --tables
với nội dung trong file request.txt
là nội dung gói tin request được lấy từ Burp Suite. Và cụ thể ở đây phần nội dung gói request của tôi dùng là
Ta nhận được 1 table mang tên users
. Tiến hành dump table users
bằng python sqlmap.py -r ~/Desktop/test/request.txt -T users --dump
Dé, và ta đã có được password của admin và là flag cần tìm.
Chậm lại và suy nghĩ
Thực chất payload admin = admin'or'1'='1'-- và password=admin
đã bị biến đổi nhưng thế nào khi gửi lên server?
Giải quyết chậm lại suy nghĩ
Trong bài này tôi có tiêm 1 ảnh thể hiện payload được gửi lên server nhưng hình ảnh không được hiển thị ở cách bình thường, bạn hãy tìm kiếm ảnh đó nhé!
Flag
e2azO93i
[^1] Xem hướng dẫn cài đặt sqlmap tại https://sqlmap.org/