업로드 양식에서 널 바이트 주입 공격을 재현하려고합니다. 그렇게는 SUBSTR()를 무시하고 인 move_uploaded_file 이후 file.php로 업로드됩니다 file.php %의 00jpg (:이 같은 이름의 파일을 업로드하기 위해 노력하고있어업로드 양식에 널 바이트 삽입
<?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>';
?>
:이 코드가)는 널 바이트 (% 00)에서 중지해야합니다.
문제는 업로드 된 파일이 file.php 서버하지만 file.php %가 00jpg (URL 표시 줄에 /file.php%2500jpg을 입력하여 액세스 할 수있는 명명되지 않는 것입니다).
move_uploaded_file()은 null 바이트를 신경 쓰지 않는 것 같습니다. 어떻게 작동합니까? 내 코드와 함께 .php 확장자를 가진 파일을 업로드 할 수 있습니까?
감사합니다. :).
'.cgi' 또는'.asp '나'.phtml'와 같은 다른 "활성"확장자로 파일을 업로드 할 수 있습니다. – duskwuff
PHP에서 NULL 바이트 중독이 수정되었습니다. 5.3. 4 '. –
** 파일 업로드 **에 블랙리스트를 사용하지 마십시오. 화이트리스트를 사용하십시오. 또한, 나는 그 주위에 몇 가지 쉬운 방법을 생각할 수 있습니다. 당신은 위생해야합니다. – Amelia