Soy nuevo en CTFs y me pidieron que resolviera esto:
#include <cstdio>
// g++ pwn2.cpp -o pwn2 -static
void ilocamp() {
char flaga[1024] = {0};
FILE *f = fopen("flag2.txt", "r");
fread(flaga, 1, 1024, f);
fclose(f);
printf("flaga: ILOCAMP{%s}\n", flaga);
}
int main() {
int tab[100] = {0};
int dwa = 2;
int n,i,min,x;
scanf("%d",&n);
for (i=0;i<n;i++) {
scanf("%d", &x);
scanf("%d", &tab[x]);
}
min = 1000000000;
for (i=0;i<n;i++) {
if (tab[i] && tab[i] < min) {
min = tab[i];
}
}
printf("najmniejsza liczba: %d a dwa wynosi: %d\n", min, dwa);
}
Sé que el punto es sobrescribir la dirección de retorno de la función principal con la dirección de entrada ilocamp (), y para hacer esto, se supone que debo usar esa vulnerabilidad simple en el bucle, pero no tengo idea de cómo hacerlo. . También tengo binario, intenté hacer algo con gdb pero no sé realmente cómo hacerlo. ¿Me puede dar algunos consejos? Hay un binario: enlace (El archivo "flag2.txt" está en el servidor local)