Я хотел попрактиковаться в атаке форматных строк, поэтому я написал небольшую программу
format.c
:
#include <stdio.h>
char input[1024];
int main() {
fgets(input, sizeof(input), stdin);
printf(input);
}
Я скомпилировал ее с gcc-7 format.c -o format -m32 -no-pie
.
Теперь я попробовал Следующее, чтобы увидеть, находится ли моя предоставленная строка в памяти: python -c 'print "AAAA" + " %x"*50' | ./format
Вывод:
AAAA 400 f7f995c0 804918a ffffd3e0 0 0 f7de07e1 f7f99000 f7f99000 0 f7de07e1 1 ffffd474 ffffd47c ffffd404 1 0 f7f99000 0 f7ffd000 0 f7f99000 f7f99000 0 f75cc795 b4f44185 0 0 0 1 8049060 0 f7fe9450 f7fe42d0 804c000 1 8049060 0 8049092 8049176 1 ffffd474 80491e0 8049240 f7fe42d0 ffffd46c 1c 1 ffffd5f9 0
Я получил много старших адресов и других адресов, но я не вижу свои А в памяти. Кто-нибудь может мне помочь?