본문 바로가기

4-2. 2024-1 심화 스터디/워게임 도장 깨기

[5주차] 2024.05.03 - Pwnable War Game Write Up

CTF Cite : https://play.picoctf.org

 

1. two-sum

 

 

Integer Overflow를 이용하여 flag를 찾는 문제이다.

힌트 1) Integer Overflow

힌트 2) Not necessarily a math problem

 

nc 명령어를 이용하여 해당 사이트에 접속하며 두개의 정수를 입력하라고 한다.

아무 숫자나 입력하며 No Overflow가 출력되며 종료된다.

 

주어진 코드 중 핵심이 되는 코드를 살펴보았을 떄 flag으로부터 문자열을 입력받아 배열 buf에 59길이만큼 저장하여 printf함수로 문자열이 출력되도록 한 후 fflush 함수로 출력 버퍼를 비우고 있다.

 

int 데이터 최대값은 아래와 같다.

  • 32bit: 2,147,483,647
  • 64bit: 9,223,372,036,854,775,807

두수를 합쳤을 때 최대값보다 크면 flag를 획득할 수 있다. 

 

 

2. hijacking

권한을 상승하여 루트 엑세스 권한을 얻어 flag를 획득하는 문제이다.

힌트 1) Check for Hidden files

힌트 2) No place like Home:)

 

ssh로 서버의 접속하여 ls -al 명령어를 통해 숨겨져있는 파일/디렉토리를 확인했다.

.server.py 파일을 확인해볼려고 했으나 권한이 picoctf가 아닌 root로 되어 있어 확인할 수 없었다.

 

 

sudo -l 명령어를 입력하여 현재 사용자가 실행할 수 있는 sudo 권한이 무엇인지 확인했다.

 

vi 기능에 sudo 권한을 사용할 수 있다는 것을 확인하여 이를 활용해 쉘에 진입하였다.

1) sudo vi | :shell

or

2) sudo vi -c ":!/bin/sh" /dev/null

 

1) sudo vi | :shell

whoami 명령어를 통해 root 계정으로 권한상승이 되었음을 알 수 있다.

 

root 계정에 처음 디렉토리 위치로 이동하여 문서/파일을 확인했고 challeng라는 디렉토리가 존재함으로 확인했다.

 

해당 디렉토리 안에 metadata.json이라는 파일을 확인하였고 cat 명령어를 사용해 안으로 확인해보았더니, flag를 획득할 수 있었다.

 

 

2) sudo vi -c ":!/bin/sh" /dev/null

 

password는 ssh 서버 접속할 때 작성한 password로 입력해줬다.

whoami 명령어를 통해 root 계정으로 권한 상승이 되었다는 것을 알 수 있다.

힌트 2번이 No place like Home:) 이므로 root 디렉토리로 공간을 이동했다.

그 후 목록을 확인하여 .flag.txt 파일을 확인했고 cat 명령어를 사용하여 해당 파일을 읽어 flag를 획득했다.