안녕하세요 sweetchip입니다.
오랜만에 시스템 해킹문제를 풀어봤는데 생각보다 기억이 잘 안나서 더듬더듬 하면서 30분 만에 성공했습니다.
nop 썰매를 사용했엇는데 많이 헷갈리네요 ~_~
개인적으로 시스템 해킹이 가장 어려운거같네요.. 대회나가서도 한문제도 못풀고 흑흑..
먼저 ftz에 접속합니다
ID : level11
pass : what!@#$?
[level11@ftz level11]$ cat hint
#include
#include
int main( int argc, char *argv[] )
{
char str[256];
setreuid( 3092, 3092 );
strcpy( str, argv[1] );
printf( str );
}
str에 256만큼 할당이 되어있습니다.
취약점은 밑줄 친 부분에서 일어나게 됩니다.
strcpy는 문자열을 그대로 가져다 붙이는 건데요, 문자열 길이 검사를 하지않아 오버플로우 취약점이 발생됩니다.
어! 가만보니
[level11@ftz level11]$ cat hint
#include
#include
int main( int argc, char *argv[] )
{
char str[256];
setreuid( 3092, 3092 );
strcpy( str, argv[1] );
printf( str );
}
포맷스트링버그 취약점도 있습니다.
하지만 오늘은 버퍼오버플로우 취약점을 이용해서 풀이해보도록 하겠습니다.
[level11@ftz level11]$ gdb attackme
GNU gdb Red Hat Linux (5.3post-0.20021129.18rh)
Copyright 2003 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i386-redhat-linux-gnu"...
(gdb) disas main
Dump of assembler code for function main:
0x08048470
0x08048471
0x08048473
0x08048479
0x0804847c
0x08048481
0x08048486
0x0804848b
0x0804848e
0x08048491
0x08048494
0x08048497
0x08048499
0x0804849f
0x080484a0
0x080484a5
0x080484a8
0x080484ab
0x080484b1
0x080484b2
0x080484b7
0x080484ba
0x080484bb
0x080484bc
0x080484bd
0x080484be
0x080484bf
End of assembler dump.
(gdb)
대강 이런 코드가 있습니다.
주석은 위에 달아 둿습니다.
(gdb) b *main 53
Breakpoint 1 at 0x80484a5
(gdb) run `perl -e 'print "\x90"x264'`
Starting program: /home/level11/attackme `perl -e 'print "\x90"x264'`
Breakpoint 1, 0x080484a5 in main ()
(gdb) x/64
0x0: Cannot access memory at address 0x0
(gdb) x/64 $esp
0xbffff8b0: 0xbffff8c0 0xbffffb1d 0xbffff8e0 0x00000001
0xbffff8c0: 0x90909090 0x90909090 0x90909090 0x90909090
0xbffff8d0: 0x90909090 0x90909090 0x90909090 0x90909090
0xbffff8e0: 0x90909090 0x90909090 0x90909090 0x90909090
0xbffff8f0: 0x90909090 0x90909090 0x90909090 0x90909090
0xbffff900: 0x90909090 0x90909090 0x90909090 0x90909090
0xbffff910: 0x90909090 0x90909090 0x90909090 0x90909090
0xbffff920: 0x90909090 0x90909090 0x90909090 0x90909090
0xbffff930: 0x90909090 0x90909090 0x90909090 0x90909090
0xbffff940: 0x90909090 0x90909090 0x90909090 0x90909090
0xbffff950: 0x90909090 0x90909090 0x90909090 0x90909090
0xbffff960: 0x90909090 0x90909090 0x90909090 0x90909090
0xbffff970: 0x90909090 0x90909090 0x90909090 0x90909090
0xbffff980: 0x90909090 0x90909090 0x90909090 0x90909090
0xbffff990: 0x90909090 0x90909090 0x90909090 0x90909090
0xbffff9a0: 0x90909090 0x90909090 0x90909090 0x90909090
(gdb)
0xbffff9b0: 0x90909090 0x90909090 0x90909090 0x90909090
0xbffff9c0: 0x90909090 0x90909090 0xbffff900 0x40033917
0xbffff9d0: 0x00000002 0xbffffa14 0xbffffa20 0x4001582c
0xbffff9e0: 0x00000002 0x08048370 0x00000000 0x08048391
0xbffff9f0: 0x08048470 0x00000002 0xbffffa14 0x080482e4
0xbffffa00: 0x08048500 0x4000c660 0xbffffa0c 0x00000000
0xbffffa10: 0x00000002 0xbffffb06 0xbffffb1d 0x00000000
0xbffffa20: 0xbffffc26 0xbffffc44 0xbffffc4f 0xbffffc5f
0xbffffa30: 0xbffffc6d 0xbffffc91 0xbffffca4 0xbffffcb7
0xbffffa40: 0xbffffcc4 0xbffffe87 0xbffffea4 0xbffffee7
0xbffffa50: 0xbffffefc 0xbfffff0e 0xbfffff1f 0xbfffff30
0xbffffa60: 0xbfffff38 0xbfffff4b 0xbfffff6a 0xbfffff7a
0xbffffa70: 0xbfffffae 0xbfffffd0 0x00000000 0x00000010
0xbffffa80: 0x0febfbff 0x00000006 0x00001000 0x00000011
0xbffffa90: 0x00000064 0x00000003 0x08048034 0x00000004
0xbffffaa0: 0x00000020 0x00000005 0x00000006 0x00000007
(gdb)
windows buffer overflow - exploit #1 (0) | 2013.01.06 |
---|---|
Windows Buffer Overflow 기초 (2) | 2013.01.05 |
HackerSchool LOB 이미지 파일 (7) | 2012.10.28 |
HackerSchool LOB Level1 Exploit (1) | 2012.09.18 |
Hackerschool Lob VM웨어 사전 세팅 하기 (2) | 2012.09.18 |