Я только начинаю заниматься реверс-инжинирингом, и я натолкнулся на видео с использованием переполнения в реальном времени, демонстрирующее эксплойты формата строки с использованием printf. Я пытался воспроизвести его результаты, но безуспешно. Мой код такой же, как в его видео. Я использовал radare2, чтобы найти адрес моей целевой переменной.
видео: https://www.youtube.com/watch?v=0WvrSfcdq1I
выход radare2:
вывод командной строки radare2
myCode:
#include <iostream>
using namespace std;
int overwritten;
void vuln(char *sdf) {
printf("typed stuff! -> ");
printf(sdf);
if(overwritten) {
printf("\nyou overwrote the var!");
}
}
int main(int argc, char *argv[]) {
vuln(argv[1]);
}
Часть, с которой у меня проблемы, - в 7:54 в его видео. Он запускает программу со скриптом Python 'AAAA' + the variable address + 'bbbb' + '%x ' * 200
. Вывод в его видео - это адрес переменной, окруженный 41414141 и 42424242. Это вывод, который я наблюдаю -> вывод . Почему я даже не вижу 41 и 42?