Lord of BOF_8_Troll


핵심 알고리즘은 다음과 같다.
- main함수 인자를 받음
argv[1]의 48번째 글자가\xbf가 아니면 종료argv[1]의 47번째 글자가\xff이면 종료argv[1]의 내용을 main함수 스택 프레임의 buffer에 복사
스택의 주소를 이용해야 하지만, 0xbfffXXXX 주소를 이용해서는 안 된다. 스택의 주소를 낮추어 2번째 바이트가 0xff가 아니도록 하면 되겠다. argv 개수의 제한은 없고, 또한 길이 제한도 없으므로 main함수 인자를 길게 넣어 스택 주소를 조정하면 되겠다.
즉, 메인함수 인자로 스택을 밀어서 주소를 낮춘다.

스택 주소의 두 번째 바이트인 ff를 fe로 바꾸기 위해 0x10000만큼의 값을 넣어주었다.

vampire의 비밀번호는 music world 이다.
tags: writeup, pwnable, buffer overflow, stack overflow, memory corruption, elf file, linux, c lang, x86asm