728x90

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

#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;
}

주어진 c코드다.  main에서 func로 전달한 인자, overflowme의 값을 바꿔주면 된다.

우리는 입력을 overflowme에 할 수 있고, 비교를 하는건 key이므로 overflowme와 key사이의 거리를 찾으면 된다.

이렇게 gdb로 찾아도 되고 

ida로 확인해봐도 된다.

거리는 52바이트이므로 dummy 52byte + 4byte(cafebabe)


daddy, I just pwned a buFFer :)

728x90

'pwnable > pwnable.kr' 카테고리의 다른 글

[pwnable.kr] mistake  (0) 2020.10.03
[pwnable.kr] lotto  (0) 2020.09.23
[pwnable.kr] flag  (0) 2020.09.23
[pwnable.kr] collision  (0) 2020.09.22
[pwnable.kr] fd  (0) 2020.09.22

+ Recent posts