Skip to content
Tags

SQL injection - String

Estimated time to read: 3 minutes

April 28, 2023


Tài nguyên của challenge này tại https://www.root-me.org/en/Challenges/Web-Server/SQL-injection-String

Link challenge này tại http://challenge01.root-me.org/web-serveur/ch19/

Tổng quan

Trong challenge này, mục tiêu của ta là lấy mật khẩu admin. Cụ thể là tiêm câu truy vấn phù hợp để truy xuất được thông tin về account có trong cơ sở dữ liệu.

Một vài keyword có thể hữu dụng cho việc truy vấn dữ liệu trong table như order by, group by,...

Kịch bản tấn công

Bước 1: Kiểm tra website

Với những thăm dò đầu tiên, ta nhận thấy rằng lỗi SQL có thể được khai thác ở url http://challenge01.root-me.org/web-serveur/ch19/?action=recherche.

Như thường lệ, ta thử tiêm 1 truy vấn đơn giản ' or 1=1 ngay lập tức ta nhận được kết quả như hình bên dưới

Image title

Hình ảnh mô tả kết quả tiêm payload

Ta thử test với ' or1=1 để kiểm tra thông báo lỗi như nào

Image title

Hình ảnh mô tả kết quả tiêm payload

Như hình trên, ta thấy thông báo cú pháp "or1" bị lỗi (vì không có dấu cách ::) ), nhưng quan trọng hơn ta thấy được database của website này dùng SQLite3.

Bước 2: Thăm dò lỗi và tìm flag

Rồi, đây có vẻ là loại UNION. Ta tiến hành kiểm tra số cột bị lỗi. Khi ta dùng query ' order by 3-- ngay lập tức bị lỗi và ta xác định được bảng này có 2 cột

Image title

Hình ảnh mô tả kết quả tiêm payload

Tiếp theo, ta kiểm tra cột hiển thị bằng ' union select 1, 2-- và ta nhận được cả 2 cột đều có thể khai thác.

Image title

Hình ảnh mô tả kết quả tiêm payload

Hơn nữa, vì đây là SQLite3 nên ta sẽ dùng ' union select 1,sql from sqlite_master-- để tìm bảng

Image title

Hình ảnh mô tả kết quả tiêm payload

Well, ta thấy được bảng users. Có bảng user rồi thì ta làm gì?

::) Thì ta đọc nó thôi: ' union select username,password FROM users--

Image title

Hình ảnh mô tả kết quả tiêm payload

Well, ta có được danh sách account như hình trên rồi kìa. Lụm flag thôi nào

Flag

c4K04dtIaJsuWdi

Comments