32비트 / NX bit 적용
main 코드
read 함수에서 256 바이트를 src에 저장
Print_message 함수에서 strcpy 함수로 src를 dest 변수에 복사
dest 변수의 크기는 56byte > overflow 발생
See_something 함수
해당 주소에 저장된 값 출력
printf와 system 사이 거리는 0xe8d0
printf와 “/bin/sh” 사이 거리는 0x11239b
elf로 printf.got의 주소를 가져옴
(GOT에는 함수의 실제 주소가 쓰여있음)
이를 이용해 printf 함수의 실제 주소를 알아내고
앞에서 구한 offset을 이용하여 system과 binsh의 주소를 계산
dest 변수의 크기가 56이므로 +SFP(4)로 60바이트의 더미를 넣어주고
system 주소 > “BBBB” > binsh 주소를 차례로 넣어줌