pwnable.kr bof 문제입니당 

 

Nana told me that buffer overflow is one of the most common software vulnerability. 
Is that true?

Download : http://pwnable.kr/bin/bof
Download : http://pwnable.kr/bin/bof.c

Running at : nc pwnable.kr 9000

 

이문제는 바이너리랑 코드를 줍니당 

 

바이너리 받아서 chmod 755 bof 해서 실행파일로 만들어 줬습니당 

 

코드입니당.

 

main에서 0xdeadbeef 를 인자로 func 함수로 넘겨주고 

 

func 함수에서는 인자로 넘어온 key의 값이 0xcafebabe 와 같아지면 해결되는 문제입니다. 

 

get 함수에서 문자를 받아올때 문자 길이를 체크하지 않아서 bof 가 발생 가능한 원리입니당. 

 

bof source code 

 

일단 bof 를 실행시켜 보고 get 으로 문자열 받을때 브포를 걸어서 AAAA 입력값을 줬습니다. 

get에서 AAAA 입력

 

그리고 cmp 보면 ebp + 0x8 과 0xcafebabe 를 비교하고 있어 ebp + 0x8 값이 무엇인지 확인해 봤고 당연히 0xdeadbeef 임을 확인 했습니당 

ebp+0x8 확인

그리고 스택을 뒤져보니 

 

내가 입력한 AAAA 가 잘 들어가 있는걸 확인 하였고 ebp+0x8 (0xdeadbeef) 값도 확인이 잘 되었습니당.

 

여기서 deadbeef 가 스택에 들어있는 이유는 main 함수에서 func 함수에게 인자로 deadbeef 를 넘겨줬기 떄문에 func 함수가 실행되면 인자가 스택에 들어가는 겁니당 . 

 

그래서 우리의 목표는 저 deadbeef 를 cafebabe 로 바꿔야 하기때문에 크기를 계산해줬습니당 

 

0xffffd320 - 0xfffd2ec = 0x34

 

hex 니까 dec 로 바꾸면 52 즉 52바이트 만큼 더미를 채우고 cafebabe 를 뒤에 입력해주면 성공 ! 

Stack view 

 

그래서 서버에서 했는데 안되고 ;;

 

두번째 방식으로 했는데 되었습니당. 

 

이유가 뭔지 궁금하넹 .. 아시는 분은 댓글로 알려주세염 

'개인공부 > pwnable' 카테고리의 다른 글

[pwn] dreamhack Sint  (0) 2022.01.10
pwnable.kr fd 문제  (0) 2019.10.21
[protostar] stack5 문제풀이  (0) 2019.01.02
[protostar] stack4 문제풀이  (0) 2018.12.31
[protostar] stack3 문제풀이  (0) 2018.11.19

+ Recent posts