Tôi đang cố gắng để tái tạo các Null Byte tiêm tấn công trên một hình thức tải lên. Tôi có mã này:Null byte tiêm trong một hình thức tải lên
<?php
if(substr($_FILES['file']['name'], -3) != "php") {
if(move_uploaded_file($_FILES['file']['tmp_name'], $_FILES['file']['name']))
echo '<b>File uploaded</b>';
else
echo '<b>Can not upload</b>';
}
else
echo '<b>This is not a valid file/b>';
?>
Tôi đang cố gắng để tải lên một tập tin có tên như thế này: file.php% 00jpg vì vậy nó sẽ bỏ qua các substr() và sẽ được tải lên như file.php từ move_uploaded_file () nên dừng lại ở byte rỗng (% 00).
Vấn đề là các tập tin được tải lên không được đặt tên file.php trên máy chủ nhưng file.php% 00jpg (mà có thể được truy cập bằng cách gõ /file.php%2500jpg trong thanh url).
Dường như move_uploaded_file() không quan tâm đến byte rỗng, vì vậy nó hoạt động như thế nào? Có thể tải lên tệp có phần mở rộng .php bằng đoạn mã của tôi không?
Cảm ơn :).
Khai thác đơn giản hơn nhiều: Tệp có thể được tải lên với phần mở rộng "hoạt động" khác, như '.gigi', hoặc' .asp', hoặc '.phtml' – duskwuff
NULL ngộ độc byte đã được sửa trong PHP' 5.3. 4'. –
** Không sử dụng danh sách đen để tải lên tệp **. Sử dụng danh sách trắng. Ngoài ra, tôi có thể nghĩ ra một vài cách dễ dàng xung quanh đó. Bạn nên khử trùng. – Amelia