[root-me]File upload - null byte

php null byte 인젝션 취약점에 대한 문제.

double extension과 비슷한 문제라서 일단 비슷하게 코드를 만들었다.

<?php
         alert("hey");
?>

를 notepad로 작성하고, 확장자는 test.php.png로 저장한다.

문제의 의도대로 이미지 확장자(png)만 업로드가 가능하며, 이를 우회해야 한다.

이번 문제에서는 double extension으로 우회가 불가능하다.

경고문구로 Wrong filename과 Wrong file extension이 있다.

널 바이트를 이용해 우회를 해줘야 하는데,

버프스위트로 파일을 올리는 과정을 잡았다.

HEX값에 0x00을 삽입해 우회하려 했으나,, 잘 안됐다.

그래서 그냥 raw에 있는 filename.php.png 형태로 만들어 null byte를 삽입해서 flag를 

얻을 수 있었다.



[php 널 바이트 취약점?]

널 바이트를 file path에 삽입해주면, C fucntion에 의해 널 바이트 뒤의 부분이 무시되는데(널 바이트는 C에서 문자열의 끝을 의미하기 때문), 이를 이용해 의도된 확장자(위 문제에서는 png,jpg 등의 이미지 확장자)를 우회할 수 있다.

댓글