2022 ChristmasCTF Writeup - Web

2022. 12. 31. 17:10CTF

728x90

2022/12/25 ~ 2022/12/27까지 진행되었던 ChristmasCTF에서 제가 출제했던 문제들의 Writeup을 공유합니다.

 

<login>

이 문제는 SQL Injection을 의도했던 문제입니다.

문제 화면

문제 링크에 들어가면 로그인 페이지가 나오는데, 필터링이 하나도 되어 있지 않아 간단한 SQL Injection 공격도 먹힙니다.

ID : ' or 1=1#

PW : dksfj(아무거나 써도 됨)

위와 같이 입력하면 로그인에 성공하면서 플래그를 얻을 수 있습니다.

<print text>

이 문제는 Directory listing 취약점을 이용해서 푸는 문제였습니다. (언인텐으로 xss가 있었다는...)

메인 페이지

메인 페이지에서 마땅히 얻을 만한 단서가 보이지 않습니다. 하지만 URL에서 main.html을 지우면 현재 디렉토리에 무슨 파일들이 있는지 볼 수 있습니다.

디렉토리 리스팅 취약점

main.html이 속해 있는 디렉토리의 모든 파일들을 확인할 수 있으며, 플래그가 있을 것으로 예상되는 flag.php를 읽으면 플래그를 얻을 수 있는 문제였습니다.

플래그

<FVS>

이 문제는 LFI(Local File Inclusion) 취약점을 이용해서 푸는 문제였습니다.

문제 화면 1

메인 화면을 보면 서비스명과 현재 디렉토리에 있는 파일들을 친절하게(?) 알려주고 있는 것을 볼 수 있습니다. 이 파일들을 보기 위해 view 페이지로 들어가면 파일명을 입력할 수 있는 창을 볼 수 있습니다.

문제 화면 2

입력 창에 file1.txt를 입력하면 해당 파일의 내용을 보여주는 것을 볼 수 있습니다.

file1.txt

하지만 텍스트 파일들은 내용을 볼 수 있지만, php 파일의 경우는 내용이 보여지는 것이 아니라 실행되기 때문에 flag.php를 아무리 읽어보고 싶어도 아무 내용도 출력하지 않는 것을 확인할 수 있습니다.

flag.php

플래그는 flag.php의 코드 안에 있기 때문에, php 코드를 읽어야 하므로 php wrapper 라는 것을 이용해서 php 코드를 읽어보면 플래그를 얻을 수 있습니다.

URL : http://www.suriryuk.com:8082/fileview.php?filename=php://filter/convert.base64-encode/resource=flag.php 

위와 같이 입력하면 base64로 인코딩된 php 코드를 얻을 수 있고, 디코딩하면 플래그를 얻을 수 있습니다.

플래그

<File Finder>

이 문제는 Command Injection을 이용해 푸는 문제였습니다.

문제 화면

메인 페이지를 보면 텍스트를 입력할 수 있는 창이 보이는데, 여기에 문자를 입력하면 해당 문자를 포함하는 파일을 찾아주는 동작을 하는 페이지입니다.

그리고 개발자 도구를 통해 HTML 코드를 보면 주석으로 파일을 찾는 명령어를 볼 수 있습니다.

사용자가 입력한 값이 $command 변수에 저장되고, 명령어 가운데 그대로 삽입하는 형태고, 필터링도 Command Injection이 불가능할 정도는 아니기에 Command Injection을 진행하면 플래그를 얻을 수 있습니다.

공격 페이로드
플래그

<upload...?>o<>

이 문제는 file upload 취약점을 이용해서 푸는 문제입니다.

문제 링크로 들어가면 파일을 업로드할 수 있는 창을 볼 수 있는데 Web Shell 을 얻기 위해 php로 만든 웹쉘을 올려보면 php 확장자는 필터링되는 것을 확인할 수 있습니다.

이 문제에서 필터링되는 확장자는 다음과 같습니다.

php뿐만 아니라 jsp, html 등도 막히기 때문에 웹쉘 파일을 그냥 올려서 실행시키는 것을 불가능합니다.

이럴 때, 사용할 수 있는 방법이 .htaccess 파일을 이용하는 것입니다.

.htaccess 파일에 대한 자세한 설명은 다음을 참고하기 바랍니다.

(https://httpd.apache.org/docs/2.4/en/howto/htaccess.html)

간단히 말하면 .htaccess 파일을 이용해서 .txt 파일을 .php 처럼 사용할 수 있습니다. 그 점을 이용해서 확장자 필터링을 우회할 수 있습니다.

공격 순서는 .htaccess를 업로드하고, 확장자를 변경한 웹쉘을 업로드하면 됩니다.

- .htaccess

AddType application/x-httpd-php .txt

.htaccess를 업로드하고 웹쉘을 업로드하면 정상적으로 업로드되고, 잘 실행되는 것을 볼 수 있습니다.

 

728x90

'CTF' 카테고리의 다른 글

UgraCTF Quals 2023 - Writeup  (0) 2023.01.15
2022 ChristmasCTF Writeup - Programming  (0) 2023.01.01
squareCTF writeup  (0) 2022.12.01