Lord of BOF_14_Giant

return address로 스택 주소나 라이브러리 주소를 이용할 수 없다. 또한 쓰레기값과 EBP 백업을 0으로 덮어써 이용할 수 없다. return address로 실행 파일 코드 주소를 이용해야 한다. ret를 다시 한 번 시켜서 환경변수에 등록한 셸 코드를 실행하도록 했다.

디스어셈블 결과 0x0804851e에 ret가 있음을 알 수 있다. 이를 return address로 이용한다.

환경변수에 등록한 셸코드의 시작 주소는 0xbfffff1f 이다.

위에서 얻은 값을 이용하여 payload를 짠다.

처음 return address는 ret 코드이고, 두 번째 이용하는 return address는 셸 코드 주소이다.

assassin의 비밀번호는 pushing me away 이다.


tags: writeup, pwnable, buffer overflow, stack overflow, memory corruption, elf file, linux, ret sled, c lang, x86asm