Entonces, este fragmento de código es vulnerable a la cadena de formato vuln (creo) en la función printf()
. Lee un archivo en /tmp/file
, así que he intentado escribir diferentes modificadores / cadenas en ese archivo y ver qué pasa pero no tengo nada interesante. Cuando escribo unas pocas líneas que contienen %x %x %x %x %s
puedo ver que a veces el salto de línea no está allí y en realidad obtengo una línea que contiene 2 líneas.
También puedo insertar un
al principio de la línea, por ejemplo, si hago b
AAAc
y lo mismo para %code% y %code% y luego copio / pego esto unas cuantas veces, el resultado es:
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
int main(int arc, char **argv)
{
int fd;
fd = open("/tmp/file",O_RDONLY);
if (fd < 0)
{
printf("Cannot open file\n");
exit(1);
}
int nb_lus;
char line[20];
while ((nb_lus = read(fd,line,20)) > 0)
{
line[nb_lus-1] = '#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
int main(int arc, char **argv)
{
int fd;
fd = open("/tmp/file",O_RDONLY);
if (fd < 0)
{
printf("Cannot open file\n");
exit(1);
}
int nb_lus;
char line[20];
while ((nb_lus = read(fd,line,20)) > 0)
{
line[nb_lus-1] = '%pre%';
printf("%s",line);
}
close(fd);
system("/bin/rm /tmp/file");
return 0;
}
AAAA
%pre% bbbbb
%pre%cccccc%pre% AAAA
';
printf("%s",line);
}
close(fd);
system("/bin/rm /tmp/file");
return 0;
}
AAAA
%pre% bbbbb
%pre%cccccc%pre% AAAA
El objetivo de la explotación es leer un archivo en un directorio protegido, pero no tengo idea de cómo lo haría con esta vulnerabilidad. Cualquier consejo es bienvenido, gracias.
%pre%