일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 인공지능
- 스트림암호
- 활성화함수파이썬
- C언어 알고리즘
- 보안
- c언어
- 소프트맥스함수
- 신경망 학습
- 신경망구현
- BOJ
- BOF
- 알고리즘
- 밑바닥부터시작하는딥러닝
- 버퍼오버플로우
- 딥러닝
- 백준
- 항등함수
- C언어알고리즘
- 머신러닝
- 딥러닝파이썬
- 신경망파이썬
- C알고리즘
- 파이썬
- 백준알고리즘
- 달고나bof
- FTZlevel10
- 정보보안
- 8086CPU레지스터
- 파이썬신경망
- 신경망
- Today
- Total
HeeJ's
[04] hackerschool FTZ :: level4 본문
level3에서 찾은 패스워드로 level4에 로그인한다.
디렉토리를 확인해주고, hint를 살펴보았다.
이번 level4는 백도어와 관련된 문제 같다.
백도어?
정상적인 인증 절차를 거치지 않고, 컴퓨터와 암호 시스템 등에 접근할 수 있도록 하는 방법
보안상 허점을 역이용하여 크래커들이 계정 탈취에 성공한 후 재침입을 대비해 쉽게 접근할 수 있도록 만들어 둔 파일
Xinetd
하나의 독립 데몬이지만, 여러가지 다른 서비스들을 제어하고 관리.
시스템 부하를 줄이기 위해 사용
힌트대로 /etc/xinetd.d/ 디렉터리로 들어가 내용을 살펴보자
앞구르기하면서 봐도 수상한 backdoor라는 파일이 있다는 것을 확인할 수 있다.
backdoor라는 파일의 실행권한을 보면, 읽기(r)밖에 할 수 없는 파일임을 알 수 있다.
그래서 backdoor파일을
cat 명령어로 읽어보았다.
service 서비스 이름
{
disable = no //서비스 함
flags = REUSE
socket_type = stream //TCP = stream, UDP = dgram
wait = no //stream의 경우 no로 설정
user = level5 //어떤 사용자권한으로 서비스 할 것인지
server = /home/level4/tmp/backdoor //실행할 데몬 명
log_on_failure += USERID // 서버에 접속 성공하지 못했을 때, /etc/xinetd.conf 파일에 정의된 기본 항목 외에 유저 아이디 값을 로그 파일에 추가하라는 뜻
}
backdoor는 finger 서비스로 실행되는 것 처럼 보이고,
user는 level5. level5의 권한으로 실행해준다는 것으로 보인다.
server의 경로는 저 경로를 실행시킨다는 뜻 같은데,
home/level4/tmp/backdoor라는 경로로 이동해 backdoor라는 파일을 변경 또는 생성해주면 되는 것 같다.
finger?
사용자 계정 정보와 최근 로그인 정보, 이메일, 예약 작업 정보 등을 볼 수 있는 명령어
home/level4/tmp 경로로 이동해보았더니
tmp 디렉터리에 아무것도 존재하지 않았다.
이 경로에 backdoor라는 파일을 만들어 my-pass를 실행시킬 backdoor를 만들어 주려고 한다.
이렇게 vi 통해 backdoor.c라는 파일 안에 my-pass를 실행시켜주도록 코드를 작성했다.
잘 작성됐나 한 번 확인해주고,
gcc 명령어로 backdoor.c를 컴파일 해주었다.
이렇게 컴파일된 파일을 확인하고,
finger를 다시 실행시켜준다.
그냥 finger만 실행시켜주면
현재 접속하고 있는 모든 사용자의 정보를 보여주기만 한다.
그렇다면 다른 옵션과 함께 사용해주어야하는 것 같다.
finger 옵션
-s : 사용자의 로그온 이름, 실제 이름, 터미널 이름, 로그온 시간 등을 보여줌
-l : -s 옵션 정보에 몇 가지를 추가하여, 여러 줄에 걸쳐서 보여준다.
-p : -l 옵션 정보에서 .plan과 .project 파일을 보이지 않는다.
옵션이 주어지지 않으면, 기본적으로 -l 옵션을 사용한 것으로 간주된다.
finger 사용 예
$finger : 현재 시스템에 로그인 되어있는 사용자들을 보여준다.
$finger user명 : host명을 명시하지 않으면, finger는 로컬에 접속한다.
$finger @host명 : user를 명시하지 않으면, 해당서버의 접속해 있는 모든 유저의 정보를 출력한다.
$finger user명 @host명
$finger @host명 user명 : 원격서버의 사용자 계정 정보 확인
[출처] https://gorans.tistory.com/9
finger명령어로 localhost를 실행해주면 다음 레벨로 넘어갈 수 있게 된다.
$ finger @localhost를 하게 되면 로컬로 finger 요청이 가게 되고,
시스템이 finger요청을 받았으니 backdoor를 실행해주는 것이다.
'<CTF> > <HackerSchool FTZ>' 카테고리의 다른 글
[06] hackerschool FTZ :: level6 (0) | 2020.08.01 |
---|---|
[05] hackerschool FTZ :: level5 (0) | 2020.08.01 |
[03] hackerschool FTZ :: level3 (0) | 2020.07.25 |
[02] hackerschool FTZ :: level2 (0) | 2020.07.23 |
[01] hackerschool FTZ :: level1 (0) | 2020.07.23 |