TimeKORP
1 minuto de lectura
Se nos proporciona esta página web:
Solo muestra la hora/fecha usando un formato dado (el valor predeterminado es %H:%M:%S
)
Inyección de comandos
Si usamos otra cadena como format
, se imprime en la página:
Podríamos suponer que el servidor solo está ejecutando algo como:
$ date +'%H:%M:%S'
15:43:24
$ date +'asdf'
asdf
Por lo tanto, el servidor web podría tener una función como esta:
from subprocess import check_output
def date(format: str) -> str:
return check_output(f"date +'{format}'", shell=True).decode()
Si esto es cierto, podríamos agregar una comilla simple e inyectar otro comando.
Parece que una sola comilla simple rompe la funcionalidad, por lo que es inyectable:
Como resultado, podemos usar un punto y coma y agregar otro comando. Hay que tener en cuenta que debemos dejar la cadena abierta, de modo que el código del servidor la cierre por nosotros:
Como se puede ver, el sitio web muestra fdsa
, que es el resultado de echo 'fdsa'
, entonces el ataque de inyección de comandos funciona.
En este punto, podemos buscar la flag en el sistema de archivos utilizando el siguiente comando:
bash -c 'find / -name /flag\* 2>/dev/null'
Flag
Ya sabemos que la flag está en / flag
, así que vamos a leerla:
HTB{1t_i5_t1m3_f0r_ult1m4t3_pwn4g3!}