Cómo usar Format String Attack

Supongamos que tengo el siguiente código:

#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>

int num1 = 0;

int main(int argc, char **argv){
    double num2;
    int *ptr = &num1;
    printf(argv[1]);

    if (num1== 2527){
        printf("Well done");
    }
    if(num2 == 4.56)
        printf("You are a format string expert");
    return 0;
}

Estoy tratando de entender cómo hacerlo bien, pero no puedo organizar mi mente con las guías en Internet.

¿Se supone que es algo como:

./Program %p %p %p %p

y entonces

 ./Program $( printf "\xAA\xAA\xAA\xAA") %.2523d%n

Simplemente no puedo entender esto. Por favor, ayúdame a superarlo.

El punto principal de esto es explotar una cadena en un programa en ejecución a través de la función prinft. Necesito imprimir "Bien hecho" y "Eres un experto en cadenas de formatos". En mi caso, a través de terminal / shell de Linux. Como notó HuStmpHrrr: se supone que esto es White Hacking - Software Security

Respuestas a la pregunta(1)

Su respuesta a la pregunta