2010-10-20 58 views
7

Nhìn qua một số bản ghi apache, tôi đã chạy vào mẫu sau nhiều lần (URL giải mã):Ý nghĩa SQL của 0x5E5B7D7E là gì?

GET /foo.php?id=1 and union select 0x5E5B7D7E,0x5E5B7D7E,0x5E5B7D7E,... -- 

Rõ ràng đây là một nỗ lực SQL injection. Nhưng tại sao hằng số hiển thị ở trên? Tôi không thể thấy nó có thể đặc biệt quan trọng như thế nào, mặc dù nó dường như xuất hiện khá thường xuyên.

Đối với giá trị của nó, hằng số trên bản đồ thành các ký tự ASCII sau: "^[}~" hoặc "~}[^" nếu bạn đảo ngược thứ tự byte. Giá trị bằng số thập phân là 1,583,054,206, trong bát phân là 013626676576. Mã này dường như không ánh xạ tới một chuỗi các lệnh x86 hữu ích.

Một tìm kiếm của Google cho số này cho thấy chỉ đơn giản là phần còn lại của nỗ lực sử dụng cùng một cuộc tấn công SQL injection trên các trang web khác - không có thông tin về cuộc tấn công.

Bất kỳ ai có thông tin chi tiết?

+0

đoán ngẫu nhiên của tôi là vì từ khóa sql xuất hiện là một phần của tuyên bố lớn hơn vì chuỗi bắt đầu bằng "và", các số sau từ khóa không nhất thiết là một phần của câu lệnh sql mà chúng đang cố gắng tiêm . có lẽ họ đang cố gắng để tiêm sql và không sql cùng một lúc? – akonsu

+0

Có, tôi nhận thấy rằng "và công đoàn" là một chút của một cấu trúc kỳ lạ, nhưng quiestion thực sự của tôi là: tại sao số đó? Nó có vẻ là một yếu tố phổ biến trong các cuộc tấn công SQL injection. – tylerl

+0

Nó có thể đang cố gắng khai thác phần mềm cụ thể. Loại trang web nào của bạn đang chạy? – mellowsoon

Trả lời

8

Giá trị này là số nhận dạng duy nhất. Nếu giá trị "^[}~" xuất hiện trên trang thì bot biết bạn dễ bị chèn ép sql, như thể giá trị "0x5E5B7D7" xuất hiện thì nó không được máy chủ sql của bạn giải thích. Thử nghiệm tiêm sql này có thể bắt đầu chỉ với một 0x5E5B7D7E và sau đó tiếp tục với số lượng được xác định trước. Điều này là bởi vì với một công đoàn chọn công đoàn phải trả lại cùng một số cột như lựa chọn nó đang được nối vào, và bot phải brute lực lượng giá trị này.

Lưu ý rằng thử nghiệm này sẽ không hoạt động với tiêm sql mù vì giá trị "^[}~" sẽ không hiển thị. Một blind sql injection test cho mysql sẽ được chuyển một cuộc gọi đến sleep(30) hoặc BENCHMARK(5000000,md5(1337)). Điều này sẽ làm cho trang mất vài giây để tải, do đó có nghĩa là mã sql này đang được thực thi.