
#4 처음에 함수 포인터를 선언
#6 함수 포인터 변수에 sup 함수를 넣어준다
#7 fgets 함수를 통해 133byte 크기까지 문자열을 입력받을 수 있음
#8 v5를 통해 sup함수 호출

sup함수를 살펴보면 입력 받은 문자열을 리턴 값으로 출력 한다는 걸 알 수 있다.
flag를 찾기 위해서는 shell을 획득해야 하기 때문에
sup함수의 리턴 값을 shell을 실행는 명령문의 주소 값으로 주면 된다.

- ebp를 기준으로 0x8C 만큼 떨어진 곳에 변수 s의 공간이 0x80(128byte) 만큼 할당 되어 있고,
- v5는 0xC(12byte)만큼 할당 되어 있음.
문자열을 입력할 수 있는 최대 크기는 133byte.
변수 s의 공간에 쓰레기 값을 채우고 v5 공간에 shell을 실행하는 명령문의 주소 값을 넣으면 된다.
shell을 실행 시키는 명령문의 주소를 보면 0x080484A4임을 알 수 있다.


-payload+=b"A" * 128 + p32(0x080484A4)
변수 s의 공간(0x80)에 쓰레기 값을 채우고
v5 공간(0xC)에 shell을 실행하는 명령문의 주소 값을 넣음

'Layer7' 카테고리의 다른 글
| Dream hack : basic_exploitation_000 (0) | 2021.07.11 |
|---|---|
| HackCTF : x64 buffer overflow (0) | 2021.06.16 |
| HackCTF : basic_BOF #1 (0) | 2021.06.16 |
| Socket misc (0) | 2021.06.13 |
| C socket (0) | 2021.06.12 |