본문 바로가기

Wargame, CTF/hackCTF[Pwnable]

Basic_BOF#1

bof_basic동작

 

IDA로 깠을 때

char형 변수와 int형 변수를 하나 선언

int형변수값을 67305985로 초기화

fgets로 s에 45바이트만큼 입력 받음

첫 if문에서 int형 변수의 값이 변했고 -559038737가 아니면

You are on the right way 출력

두번째 if문에서 int형 변수가 정확히 -559038737이면 쉘을 실행시킴

 

입력은 s만 받고 int형 변수는 건드리는 부분이 없고 제목을 봐서

buffer overflow를 이용해서 입력받은 s를 넘치게해

int를 원하는 값으로 바꿔야함

 

gdb로보니 원하는 값은 0xdeadbeef인거 같음

 

일단 s에서 int형 변수까지의 거리를 구함

int형 변수의 위치는 ebp-0xc

s의 위치는 ebp-0x34

0x34 - 0xc = 0x28(40byte)

offset = 40

 

맞는지 확인

main+86에 bp를 걸고

pattern create와 pattern offset으로 본다

40바이트 만큼 맞음

 

payload

로컬에서 확인

된다
remote 버전

 

클리어

 

'Wargame, CTF > hackCTF[Pwnable]' 카테고리의 다른 글

Basic_BOF#2  (0) 2020.02.29