Actualmente estoy haciendo algo de práctica sobre la seguridad y los desafíos que se presentan en un sitio web. Uno de ellos habla sobre LFI y yo descubrí qué hacer, pero no tengo idea de cómo hacerlo, así que vamos a mostrarte el problema:
Aquí está la url para hackear:
http://example.com/challenge27/?page=contact
Se me pide que obtenga la contraseña en /etc/passwd
, por lo que la primera idea que surge es probar un directorio transversal:
http://example.com/challenge27/?page=.
Esto lanza una excepción:
Warning: assert(): Assertion "strpos('includes/..php', '..') === false" failed
Lo que es obvio es que strpos
detecta cada aparición de '..'
en la ruta y la afirmación comprueba que esta función devuelve un valor falso
Luego lo intento agregando un byte nulo al final de la misma url
http://example.com/challenge27/?page=.%00
que me da otra pista:
Warning: file_exists() expects parameter 1 to be a valid path
Pero aquí estoy bloqueado, mi objetivo es inyectar la ruta a /etc/passwd
de esta manera:
http://example.com/challenge27/?page=../../../../etc/passwd
Siento que puedo explotar la solución de byte nulo, pero después de probar muchas URL diferentes obtuve la advertencia file_exists () o la de assert (), me estoy quedando sin ideas. ¿Alguien tiene una pista más para dar?