일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- RITSEC
- 뉴스클리핑
- reversing
- 웹해킹
- HackCTF
- Python
- CodeEngn
- buffer over flow
- x64dbg
- RITSEC CTF 2019
- Hackerschool
- Nop Slide
- 리버싱
- 어셈블리어
- webhacking
- Shadow 동아리
- NewsClipping
- 보안뉴스
- termux
- ftz
- requests
- BOF
- 리눅스
- 버퍼오버플로우
- Next.js
- SQL Injection
- ctf
- Linux
- PWN
- writeup
Archives
- Today
- Total
Jaeseo's Information Security Story
FTZ - level3 - WriteUp 본문
일단 hint를 보고 문제를 풀어본다.
일단 autodig명령어를 이용하여 level4의 권한을 얻어야 하는 것 같다.
whereis와 ls -la를 통해 살펴 본 결과 leve4의 권한으로 set-uid가 설정되어 있다.
이제 autodig 명령어의 소스 코드를 살펴본다.
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char **argv){
char cmd[100];
if( argc!=2 ){ // 만약 인자값 하나가 아니라면 간단한 설명을 보여주고 종료로 빠진다.
printf( "Auto Digger Version 0.9\n" );
printf( "Usage : %s host\n", argv[0] );
exit(0);
}
strcpy( cmd, "dig @" ); //cmd배열에 dig @를 추가
strcat( cmd, argv[1] ); //cmd배열에 인자값을 추가
strcat( cmd, " version.bind chaos txt"); //cmd배열에 문자 version.bind chaos txt 추가
system( cmd ); //cmd에 있는 문자를 가지고 명령 실행!
}
이제 이 소스를 보고 Payload를 짜본다.
일단 dig 명령어(도메인 질의 명령어)를 정상적으로 동작하기 위해 roopback 주소 127.0.0.1을
넣어준다.
그다음 이어서 명령어가 정상적으로 인식하기 위해 ;
(세미콜론)을 추가해준다.
그리고 level4의 권한으로 실행을 원하는 명령어를 추가해준다.
마지막으로 하나의 문자열로 인식하도록 묶어 준다.
그 결과 실행 시 cmd [100] 배열 안에는 이러한 명령어가 저장되어 있을 것이다.
dig @127.0.0.1;my-pass version.bind chaos txt
이제 이 아래의 명령어를 실행하면 dig 명령어를 실행하고 level4의 권한으로 my-pass명령어가 실행될 것이다.
autodig "127.0.0.1;my-pass"
level4:suck my brain
'Write UP > FTZ' 카테고리의 다른 글
FTZ - level6 - WriteUp (0) | 2019.11.09 |
---|---|
FTZ - level5 - WriteUP (0) | 2019.11.09 |
FTZ - level4 - WriteUp (0) | 2019.11.08 |
FTZ - level2 - WriteUp (0) | 2019.11.08 |
FTZ - level 1 - WriteUP (0) | 2019.11.08 |
Comments