PHP e Null Bytes issues
Aparentemente esta verificação é bastante segura né?
Infelizmente não. O PHP usa o padrão de strings usado em C (aquelas terminadas com ‘\0′), o que gera um problema bastante conhecido chamado de Null Byte issue [1].
O que acontece se seu $_GET['teste'], aparentemente seguro, tiver um ‘\0′?
Sua função realpath vai verificar apenas o $_GET['teste'] e nem vai saber que existe um “.php”
Faça o teste:
http://localhost/labs/teste.php?teste=/etc/passwd%00
(%00 é o código hexadecimal aceito pelos browsers para o \0)
E o resultado:
Fernando Bittencourt wrote:
Post muito útil, Danilo.
Acredito que a maneira mais simples de contornar esse problema seja o uso de trim() ou rtrim(), que retiram, entre outros caracteres, o byte NULL.
Posted on 24-Aug-07 at 2:32 pm | Permalink