read: 0x32(50)바이트를 받아옴
gets(&s): s 변수에 문자열 저장
name: bss 영역에 있는 변수.
name 변수의 주소가 0x0804A060임을 확인 가능
s의 크기 확인 가능 (20바이트)
checksec으로 파일 보호기법 확인
20+4+4(RET)으로 판단해서
name에 쉘코드,
get으로 받아오는 s에 “A”*24+nameaddr을 전달했을 때
쉘 획득 X
main 함수에서 gets 함수 CALL 하는 부분과
setvbuf 함수 처음에 break point 설정
실행해서 esp확인하고
0xffffd05c에 0x80484fb가 있는 것 확인 (CALL 다음 주소)
Return address 주소는 0xffffd05c
s에 입력
s의 시작은 0xffffd07c임을 알 수 있음
0xffffd07c – 0xffffd05c는 32이므로 둘 사이의 거리는 32
s(20) + dummy(8) + SFP(4)임을 알 수 있음
페이로드 작성
Name에 쉘코드, 이후 배열 s에 A*32+name의 주소를 전달해 줌