본문 바로가기

해킹공부/pwnable.kr

bof

이번엔 그 유명한 buffer overflow를 사용하는 문제...인가보다

내가 bof를 하다니

소스부터 보자

 

0xdeadbeef로 준 parameter가 0xcafebabe이면 flag를 준다고 한다.

그리고 대놓고 overflow하라고 gets함수에 표시를 해 주었다.

친절하게 알려주었으니 한번 해보자.

 

우선 func함수에선 길이 32의 char배열 하나만 선언했다.

이 부분을 assembly코드로 확인해보자

 

 

call 명령어에 함수를 <func+25> 이렇게 사용하지만 call을 호출한 순서로 보아 <func+36>은 gets인걸 알 수 있다.

그럼 mov로 받은 [ebp-0x2c]는 변수 overflowme이다.

이 함수는 overflowme로 선언한 32byte 외에도 dummy값으로 12byte를 ebp로부터 선언했다.

 

따라서 gets를 사용해 덮어써야 하는 buffer의 크기는 32(overflowme)+12(dummy) + 4(sfp) + 4(ret)

총 52byte이다.

즉 52byte를 덮어쓴 뒤 0xcafebabe를 입력해주면 flag를 확인할 수 있다.

( 함수의 stack구조는 다음에 알아보자 )

 

이론상 되는게 맞지만 막상 진짜 되니까 진짜 신기하다.

 

'해킹공부 > pwnable.kr' 카테고리의 다른 글

mistake  (0) 2017.08.30
random  (0) 2017.08.30
flag  (0) 2017.08.30
collision  (0) 2017.08.29
fd  (0) 2017.08.29