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 를 실행시켜 보고 get 으로 문자열 받을때 브포를 걸어서 AAAA 입력값을 줬습니다.
그리고 cmp 보면 ebp + 0x8 과 0xcafebabe 를 비교하고 있어 ebp + 0x8 값이 무엇인지 확인해 봤고 당연히 0xdeadbeef 임을 확인 했습니당
그리고 스택을 뒤져보니
내가 입력한 AAAA 가 잘 들어가 있는걸 확인 하였고 ebp+0x8 (0xdeadbeef) 값도 확인이 잘 되었습니당.
여기서 deadbeef 가 스택에 들어있는 이유는 main 함수에서 func 함수에게 인자로 deadbeef 를 넘겨줬기 떄문에 func 함수가 실행되면 인자가 스택에 들어가는 겁니당 .
그래서 우리의 목표는 저 deadbeef 를 cafebabe 로 바꿔야 하기때문에 크기를 계산해줬습니당
0xffffd320 - 0xfffd2ec = 0x34
hex 니까 dec 로 바꾸면 52 즉 52바이트 만큼 더미를 채우고 cafebabe 를 뒤에 입력해주면 성공 !
그래서 서버에서 했는데 안되고 ;;
두번째 방식으로 했는데 되었습니당.
이유가 뭔지 궁금하넹 .. 아시는 분은 댓글로 알려주세염
'개인공부 > 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 |