доброго времени суток.
разбираюсь с ROP, натолкнулся на интересное поведение strcpy.
программка:
Код:
#include <stdio.h>
#include <string.h>
int main (int argc, char *argv[])
{
char buf[100];
if (argc > 1) {
strcpy(buf, argv[1]);
} else
printf("Please, enter the argument!\n");
return 0;
}
загружаем в gdb и ставим бряк на строку 13.
запускаем:
(gdb) r `printf "\x41\x0a\x41\x41\x41"`
Starting program: /home/test/test.c `printf "\x41\x0a\x41\x41"`
Breakpoint 3, main (argc=3, argv=0xbffff4f4) at test.c:13
13 return 0;
(gdb) x/4x &buf
0xbffff3dc: 0x00000041 0x00000000 0x00000001 0xb7fff8f8
(gdb)
т.е. весь argv[1] пропал, начиная с \x0a и до конца.
такое же поведение с \x09
как быть?