2022. 12. 31. 17:10ㆍCTF
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) 취약점을 이용해서 푸는 문제였습니다.
메인 화면을 보면 서비스명과 현재 디렉토리에 있는 파일들을 친절하게(?) 알려주고 있는 것을 볼 수 있습니다. 이 파일들을 보기 위해 view 페이지로 들어가면 파일명을 입력할 수 있는 창을 볼 수 있습니다.
입력 창에 file1.txt를 입력하면 해당 파일의 내용을 보여주는 것을 볼 수 있습니다.
하지만 텍스트 파일들은 내용을 볼 수 있지만, php 파일의 경우는 내용이 보여지는 것이 아니라 실행되기 때문에 flag.php를 아무리 읽어보고 싶어도 아무 내용도 출력하지 않는 것을 확인할 수 있습니다.
플래그는 flag.php의 코드 안에 있기 때문에, php 코드를 읽어야 하므로 php wrapper 라는 것을 이용해서 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를 업로드하고 웹쉘을 업로드하면 정상적으로 업로드되고, 잘 실행되는 것을 볼 수 있습니다.
'CTF' 카테고리의 다른 글
UgraCTF Quals 2023 - Writeup (0) | 2023.01.15 |
---|---|
2022 ChristmasCTF Writeup - Programming (0) | 2023.01.01 |
squareCTF writeup (0) | 2022.12.01 |