Como usar o formato String Attack

Suponha que eu tenha o seguinte 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;
}

Estou tentando entender como fazê-lo corretamente, mas não consigo organizar minha mente com os guias da Internet.

Supõe-se algo como:

./Program %p %p %p %p

e depois

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

Eu simplesmente não consigo entender isso, por favor me ajude com isso.

O ponto principal disso é explorar uma string em um programa em execução através da função prinft. Preciso imprimir "Bem feito" e "Você é um especialista em cadeias de formato". No meu caso, através do terminal / shell do Linux. Como observa o HuStmpHrrr: isso realmente deveria ser o White Hacking - Software Security

questionAnswers(1)

yourAnswerToTheQuestion