Hack The Box/Lab

Base - swp & reverse shell 2

YujinSec 2026. 5. 4. 04:58

1. 기본 개념

0) 기본 명령어

1: tac

: cat의 반대. 거꾸로 출력해 줌. 

 

2: su

: 현재 유저에서 다른 유저로 변경하고 싶을 때 사용함. 

 

3: sudo -l

: 현재 사용자가 sudo(root 권한)로 실행 가능한 명령어 목록을 보여줌. 

 

4: find

- 파일/디렉터리 검색 도구

find [어디서찾을지] [조건]

 

 

1) php

- 세계에서 가장 많이 쓰이는 백엔드 언어 중 하나

ex) facebook, 위키피디아, hackthebox, 야후 등,,

 

2) swp 파일

: 백업 파일. 버퍼에서 생긴 변경 사항을 저장함. 

 

- 확장자: .swp

- Vim 혹은 pc가 crash 상황이 생기면, 스왑 파일을 통해 복구가 가능함. 

- 동일 파일에 대한 동시 수정을 막기도 함

- Vim 스왑 파일 복구 평령어)

가끔 복구 안 될 수도 있다 함,, 

vim -r [swap file]

 

- 임시 파일로, 사람이 읽을 수 없는 문자열도 포함함

-> 이때 쓰는 게 strings 유틸리티. (윈보악에 배운 그 툴인듯)

strings: 파일 안에 사람이 읽을 수 있는 문자열을 보여줌. 

 

3) Type Juggling bug

: php같은 느슨한 타입 언어에서, "자료형"을 자동 변환하다가 인증/비교 우회가 발생하는 취약점. 

 

4) 리버스 셸 2

<?php echo system($_REQUEST['cmd']);?>

 

이번에는 $GET 대신 $_REQUEST를 사용!

why? 

cmd라는 파라미터를 가져올 떄, get(헤더)과 post(본문) 요청에 있는 파라미터 둘 다 가져올 수 있음. 

 

5) www-data

: 웹 서버가 설치된 프로그램 시스템에서 기본적으로 사용되는 계정. 보통 최소 권한만 가짐. 

 

- 아파치 http 서버에서도 사용하는 권한 계정임. 

 

6) GTFOBins & LOLBAS

: 특정 리눅스 명령어(바이너리)를 이용해서 권한 상승, 쉘 획득, 파일 읽기 등을 하는 방법을 정리한 데이터베이스 사이트

> GTFOBins

https://gtfobins.org/

 

GTFOBins

GTFOBins is a curated list of Unix-like executables that can be used to bypass local security restrictions in misconfigured systems.

gtfobins.org

> LOLBAS

https://lolbas-project.github.io/

 

LOLBAS

 

lolbas-project.github.io

 

 

2. 문제 풀이

가진 계정 정보가 없으니 일단 http로 가자. 

 

보면 로그인 페이지를 클릭할 수 있음. 바로 ㄱㄱ

근데 여기 url을 보면, 바로 위에 login 디렉토리가 보인다. 거기로도 가보자. 

파일들이 보임. 

 

맨 위 클릭하면 첫 메인 페이지로 가짐. 

2번 confifuration파일은 안 열림

로그인.php는 그냥 로그인 페이지로 가지고 당연하게도. 

마지막 swp은 다운로드가 된다!

 

다운로드 후 그냥 더블클릭으로 열기는 x. 

명령어로 열어보자. strings 툴 활용. 

근데 보면 거꾸로 되어 있는 듯. 

 

따로 txt로 저장해서 거꾸로 읽자. 

보면 strcmp함수가 취약점임. 뭐냐? 바로 타입 체크를 안 한다. 

즉 우리가 null값으로 처리되게 타입을 변환 시켜 에러를 내어 null로 만들면, strcmp에서는 그걸 0으로 받아드려 처리하게 됨. 

null이랑 비교 연산하면 답이 null이니, 그걸 0으로 반환하는 치명적인 취약점!

 

일단 burp suite를 켜서 패킷 보냄. 

 

여기서 post요청인 거 잡아서 이름, 비번 타입을 배열로 바꿔버리기~

 

이렇게 배열로 바꾸면, 잘못된 입력으로 null 처리가 될 거임. 

 

그리고 사이트 재접속 하면? 로그인 성공 후 관련 페이지로 들어가짐. 

업로드 하라 하니 해보자. php파일로. 

 

우리는 이 php파일을 셸 따는 코드를 넣어볼거다. 이 파일이 실행되면 셸이 따질 거임. 

일단 업로드. 

그리고 분명 업로드 한 걸 다루는 디렉토리도 존재할 거임. gobuster로 찾아보자. 

찾음. ㄱㄱ. 

업롣 한 파일들이 보임. 

저 업로드 한 파일 더블 클릭하고, 인자 cmd만들어서 적어봄. 

인자 넣고 실행이 burp suite에서는 안 되어서 나가서 일반 웹 브라우저로 다시 접속해봄. 잘 됨.

 

그래도 burp suite로 패킷은 받음

우선 해당 요청을 리피터로 먼저 보내서 수정해주자. 

 

 

 

이제 인자 부분 코드를 리버스 셸 코드로 아예 바꿔봄! 

그 전에 이건 특수문자가 있어서 인코딩 하려고 burp suite 사용중인 거임. ctrl+U

url 인코딩으로 바꾸니 특수문자들이 알맞게 처리되는 형식으로 바뀜. 

ip랑 port도 원하는 걸로 바꾸고, 

send 전에 리스닝 켜두고 보내보면 됨. 

이제 연결 성공!

우선 기본 경로가 지금 사이트 url 경로와 똑같은 것을 보아, 기본 사이트 경로가 다 이 shell에 저장된 거 같음. 그럼 올라가서, 처음에 본 configuration 파일 있는 곳으로 가보자. 

 

비번을 하나 획득함!

이 pc 주인은 john이군,, 이 ip에 대해 ssh가 있었으니 이제 이 정보로 로그인 해보자. 

비번도 입력 ㄱㄱ. 

현재 사용자인 john이 sudo 로 실행 가능한 명령어 목록을 출력해봄. find가 가능하단다. 

find로 어떻게 루트 권한을 획득하는지 알아야 한다. 

 

이건 사실 치팅 시트 존재함 ㅎ

https://gtfobins.org/gtfobins/find/

 

find | GTFOBins

Living off the land using "find".

gtfobins.org

저기 나온 명령어 그대로 복붙해서 해보자. 

앞에 sudo를 붙여여 관리자 권한으로 승격됨을 잊지말자,,, find를 사용하는 이유가 애초에 관리자 실행이 가능해서였다,,

일단 유저 플래그 획득!

root 플래그도 뒤적거리다 보면 나옴 

플래그 둘 다 획득!!

 

 

'Hack The Box > Lab' 카테고리의 다른 글

Included - LFI 2 & tftp & lxd  (1) 2026.05.07
Planning - ffuf & netstat & cron  (0) 2026.05.07
Tactics - smb & impacket  (0) 2026.05.02
Pennyworth - CVE & Jenkins  (0) 2026.05.02
Ignition - curl  (0) 2026.05.02