Sqlmap

General

Cú pháp đơn giản nhất để sử dụng:

sqlmap -u <URL/vulnerable_param> [optional]

Hoặc sử dụng HTTP request (raw):

sqlmap -r request.txt [optional]

Optional group

Nhóm
Tùy chọn chính
Mục đích

Target

-u, -r, -g, -d, -m, -l

Xác định mục tiêu (URL, file log, google dork, chuỗi kết nối DB…)

Request

--data, --cookie, --random-agent, --proxy, --tor

Điều chỉnh cách gửi yêu cầu HTTP

Injection

-p, --dbms, --level, --risk, --technique, --tamper

Chọn tham số, loại DBMS, mức/nhiệm vụ test, kỹ thuật SQLi & script né WAF

Enumeration

--banner, --dbs, --tables, --columns, --dump, -D, -T, -C, --schema, -a, --passwords

Liệt kê & trích xuất cấu trúc / dữ liệu DB

OS access

--os-shell, --os-cmd, --file-read, --os-pwn

Truy cập hệ điều hành nếu đặc quyền cho phép

General

--batch, --flush-session, --crawl, --answers

Tự động hóa, xóa cache, thu thập link…

Misc

-h, -hh, --update, --wizard, -v 0-6

Trợ giúp, cập nhật, giao diện wizard, mức log

Xem đầy đủ về manual tại đây

Quy trình sử dụng Sqlmap

Ta có thể sử dụng các option khác như:

  • --random-agent | --tor để giảm dấu vết trên internet

  • Ta có thể tăng --level 5 --risk 3 để deep scanning nếu cần thiết.,

  • Hoặc là truyền vào file có các http header chính xác nhất trong context đó.

1. Xác minh lỗ hổng Sqli

Nếu url có nhiều hơn 1 parameter mà mình muốn chỉ định các param có lỗi thì có thể sử dụng option -p

Hoặc nếu ta có nhiều hơn 1 target, có thể sử dụng option -m

2. Nếu lỗ hổng tồn tại -> liệt kê database

3. Liệt kê tables trong DB đích

4. Liệt kê column và dump database

5. Get shell (nếu thỏa mãn vài điều kiện trong từng DB cụ thể)

Mỗi lần chạy sqlmap với 1 target cụ thể, công cụ sinh ra 3 file sau:

  • log: chứa file .log liệt kê từng request, kèm thời gian và trạng thái.

  • session.sqlite: cơ sở dữ liệu SQLite lưu mọi thông tin phiên.

  • dump/: nơi sqlmap ghi dữ liệu đã trích xuất (nếu có).

Advanced usage

Kỹ thuật injection nâng cao

Ta có thể chỉnh định các loại injection cụ thể:

Các kỹ thuật:

  • B: Boolean-based blind - phát hiện qua sự khác biệt trong response

  • E: Error-based - khai thác thông qua error message từ DBMS

  • U: Union query-based - sử dụng UNION SELECT để trích xuất dữ liệu

  • S: Stacked queries - thực thi nhiều câu lệnh SQL liên tiếp

  • T: Time-based blind - dựa vào độ trễ response để kết luận

  • Q: Inline queries - query lồng nhau

Tối ưu hóa hiệu suất của sqlmap

Ta có thể sử dụng các option để tối ưu hóa cách hoạt động cũng như tận dụng tài nguyên sẵn có của máy tính

-o : bật tất cả optimization

-- threads=10 : sử dụng multi-threading

--delay=0.5 : chỉ định độ delay giữa các request

Bypass WAF với tamper scripts

Ta có thể sử dụng các tamper scripts như sau:

Các tamper script thường thấy:

  • space2comment: Thay thế khoảng trắng bằng comment /**/

  • equaltolike: Chuyển = thành LIKE

  • greatest: Bypass ORDER BY với GREATEST()

  • charencode: Encode characters thành dạng hex

  • randomcase: Random case của keywords

Enumeration advanced

Ta có thể lấy database fingerprinting chi tiết bằng các command sau:

Ngoài ra thì có thể enumeration các schema của database để có cái nhìn tổng quan về database của target

Password cracking

Lưu ý:

  • --common-tables: sqlmap sử dụng wordlist built-in chứa tên các bảng phổ biến như users, admin, ....

  • --common-columns: tương tự như tables

Command trên được sử dụng khi:

  • Không có quyền enumerate tables/columns bằng information_schema

  • Muốn tìm nhanh các bảng/cột quan trọng mà không cần dump toàn bộ schema

Post-explotation advanced

Đầu tiên là đọc file

Hoặc là có thể truy cập thẳng vào shell của target hoặc là thực thi command trực tiếp

Ngoài ra đối với windows, ta có thể đọc được các Registry key

Kết hợp sqlmap với các tools khác

Evasion techniques

Request modification

Stealth scanning

Last updated

Was this helpful?