Pwnable.kr_bof5 WriteUp

CTF 중점 스터디

2019. 11. 17. 19:15

Bof 파일을 실행시킨후 아무 값이나 넣어보면 

이렇게 실패문자가 뜬다..

 

파일을 내려받고 bof.c파일을 열어보자.

func함수의 인자값으로 deadbeef을 넣어준 후 func 함수에서 deadbeef 값과 cafebabe 가 같으면

/bin/sh이 열리는 것을 알 수 있다.

Func 함수를 보면 32byte만큼 버퍼를 할당해주고 입력을 받는 부분이 있는데 , 이 부분을 통해 오버플로우를 통해 deadbeef 값을 cafebabe값으로 바꿔줘야 하는 것 같다.

 

그럼 bof 파일을 gdb로 열어서 분석해보자!!
일단 메인을 disass 명령어로 열어보면

이다. 여기까지의 스택을 그려보면

 

이런 식으로 되어있다.

이제 func 함수를 disass 로 분석해보면

이렇게 되어있는데 하나씩 분석해보자.

Puts 함수전에 인자값을 하나 넣어주었는데 뭔지 확인해보면

“overflow me : “ 라는 것을 알 수 있다.

 

 

 

 

그 다음 부분을 보자

32바이트 만큼 버퍼를 생성해주고 이 버퍼에 gets() 함수로 받은 값을 저장해준다!.

 

그 다음 아까 인자로 넘겨주었던 deadbeef 와 비교를하여 같지않으며 실패부분으로 넘어가는 것을 알 수 있다.

여기까지의 스택 모습을 그려보면

 

 

이런 모습이란 것을 알 수 있다

따라서 

초록색 부분을 오버플로우 해주면 되니까

52byte는 아무거나 넣어주고 4bytecafebabe을 넣어주면 된다. 따라서 페이로드를 작성해보면

(python -c ‘print “T”*52 + "\xbe\xba\xfe\xca"’ ; cat) | nc pwnable.kr 9000

 

이렇게 정답을 알 수 있다.

 

'CTF 중점 스터디' 카테고리의 다른 글

Wargame.kr - strcmp - Write up  (0) 2019.11.18
N00bCTF What is bof?  (0) 2019.11.18
Reversing.kr - Easy Keygen Write up  (0) 2019.11.12
Newbie CTF REC Write up  (0) 2019.11.11
N00bCTF - Over the RET Write-up  (0) 2019.11.10