반응형

WarGame/LOB(The Lord of the BOF) 13

3단계 cobolt -> goblin

이번에도 버퍼 크기가 작고 함수만 gets으로 달라졌다. NOP+SHELL RET [4] SFP [4] Buffer [16] 이번에는 ret 위쪽 스택영역을 이용하여 exploit을 시도할 것이다. 첫 번째로 주소 값을 구해보자. 대략적으로 0xbffffb34를 사용하면 될 거 같다. dummy(20byte) + 0xbffffb34(4byte) + \x90(100byte) + 쉘 코드(25byte) 이렇게 하여 exploit을 해보자. [그림 1-3] exploit을 성공한 것을 볼 수 있다.

2단계 gremlin->cobolt

이번에는 소스코드를 보면 버퍼 크기가 너무 작다... 너무 작아서 쉘 코드도 다 들어가지 않는다. 버퍼를 이용하지 않고 매개변수 argv[2]를 이용하여 exploit을 수행할 것이다. gdb를 이용해 arg[2]의 주소 값 위치를 알아보자. 대략적으로 0xbffffc10로 잡으면 될 것 같다. 이제 준비는 끝났다. argv[1] = dummy (20byte) + 0xbffffc10 argv[2] = \x90 (100byte) + 쉘 코드 이렇게 exploit을 해보자. exploit을 성공한 것을 볼 수 있다.

1단계 gate -> gremlin

처음 어떤 파일이 있나 확인해보면, gremlin의 권한을 가지고 있는 실행 파일과 소스코드가 존재한다. gremlin.c 파일을 cat 명령어로 확인을 해보면 소스코드가 존재한다. 소스 코드를 분석해면 취약한 함수 strcpy()가 존재하는 것을 알 수 있다. 그렇다면 exploit이 가능하다. exploit 준비를 해보자. 첫 번째로 gdb 툴을 이용해 실제 스택 영역에 소스코드에 나온 데로 256byte를 사용하는지 확인해보자. 이렇게 어셈블리어를 확인해보면 실제 소스코드에 나와있는데로 256byte를 사용한다. 메모리 구조를 확인하면 RET [4] SFP [4] buffer [256] 이렇게 되어있다. 저기를 exploit 하기위해 총 260byte에 0x90과 쉘 코드를 넣고 ret에는 0x90..

반응형