2010-08-10 37 views
8

Trang web tôi làm việc gần đây đã cố gắng để được hack bởi kịch bản SQL injection sauBạn có thể giải thích việc tiêm SQL này không?

boys' and 3=8 union 
select 1, 
concat(0x232425,ifnull(`table_name`,0x30),char(9),ifnull(`table_rows`,0x30), char(9),0x252423), 
3,4,5,6,7,8,9 

from `information_schema`.`tables` 

where table_schema=0x62646B3032 limit 44,1 -- And '8'='8 

tiêm này trả lại tên bảng mysql. Điều này đã được báo cáo bởi hệ thống báo cáo lỗi trên trang web đó và chúng tôi đã cố gắng khắc phục phần đó tuy nhiên tôi không thể hiểu được ý nghĩa của việc tiêm ở trên là gì?

Bất kỳ ai cũng có thể giải thích điều này?

Phê-nu-

+0

Tôi đang tìm kiếm cụ thể ý nghĩa của việc sử dụng như "0x232425", ifnull ('table_rows', 0x30) v.v ... ở trên. – Penuel

+4

http://xkcd.com/327/ –

Trả lời

4

Theo this các concat MySQL()

Trả về chuỗi kết quả từ concatenating các đối số. Có thể có một hoặc nhiều đối số. Nếu tất cả các đối số là các chuỗi không phải là chuỗi nhị phân, thì kết quả là một chuỗi không nhị phân. Nếu đối số bao gồm bất kỳ chuỗi nhị phân nào, thì kết quả là chuỗi nhị phân. Một đối số được chuyển đổi sang dạng chuỗi nhị phân tương đương nó

Vì vậy 0x232425 được chuyển thành # $% mà chỉ đơn giản là thêm vào sự khởi đầu và kết thúc của lĩnh vực tên_bảng. Có lẽ chỉ để làm cho nó dễ dàng hơn cho họ để kéo ra các tên bảng sau này bằng cách sử dụng Regex.

Sau đó trên char (9) tương đương với một tab như bạn có thể thấy here và chỉ ở đó để định dạng đầu ra đẹp hơn.

3,4,5,6,7,8,9 chỉ có ở đó để các cột khớp với bảng con trai mà chúng đang thực hiện Liên minh.

+1

Cảm ơn và giải thích tuyệt vời. – Penuel

6

Họ đang sử dụng một lựa chọn từ các quan điểm Information Schema trong máy chủ mysql:

http://dev.mysql.com/doc/refman/5.0/en/information-schema.html

Họ sử dụng một số hacks thông minh để đánh tan những kỹ thuật phòng chống sql injection đơn giản.

+0

Mặc dù bạn sử dụng MySQL, cả hai cơ sở dữ liệu đều có bảng information_schema (kể từ MySQL 5). – SteveCav

+0

Đây là MySQL. Lưu ý các dấu gạch chéo ngược. Nhưng có, MySQL cũng có một cơ sở dữ liệu information_schema. – cHao

+0

Cảm ơn tất cả, nhưng những gì tôi đang tìm kiếm giá trị cụ thể như 0x232425 trong truy vấn. Nó đang làm gì vậy? – Penuel

3
Tiêm này trả về tên bảng mysql.

Bạn có nghĩa là trang web của bạn hiển thị tên bảng khi bạn cung cấp cho nó đầu vào này hoặc truy vấn trả về khi chạy từ ứng dụng khách mysql? Nếu nó hiển thị trên trang web của bạn, thì kẻ tấn công có khả năng tiêm nhiều truy vấn có hại hơn. Kiểm tra dữ liệu của bạn.

+0

Nó cho thấy tên bảng trên trang web của chúng tôi. Chúng tôi nhận ra mức độ nghiêm trọng và chúng tôi đã vá phần đó bằng bộ lọc đầu vào.Chúng tôi cũng đang làm việc trên một số bộ lọc đầu vào toàn cầu để ngay cả khi các lập trình viên không kiểm tra đầu vào mà đầu vào sẽ bị bỏ qua bởi ứng dụng tự động, buộc các lập trình viên kiểm tra đầu vào. – Penuel

Các vấn đề liên quan