https://dreamhack.io/wargame/challenges/873
php로 작성된 페이지로 2단계에 걸쳐서 푸는 문제다.
플래그는 ../dream/flag.txt에 있다고 한다.
가상머신에 접속하면 이름과 패스워드를 제출하는 입력 란이 있다.
혹시나 해서 admin/admin을 입력해봤는데 아니라고 했다. :(
주어진 문제 파일 중 index.php에는 얻을 수 있는 정보가 없었다.
그래서 step2.php의 내용을 확인했더니
이름과 패스워드가 아예 노출되어 있어서 어떤 값을 입력하면 step 2로 넘어갈 수 있는지 확인할 수 있었으며,
입력 란에 들어오는 문자를 필터링하고 있기 때문에 step 2로 넘어가려면 필터링을 우회해야 한다는 사실을 알게 되었다.
1. name 필터링 우회
- name은 preg_replace 함수를 이용하여 nyang 문자열이 필터링 되어 있다.
-원래 name인 dnyang0310의 nyang 사이에 nyang을 삽입하면 이를 우회할 수 있다.- 따라서 name 입력 란에 dnynyang0310을 입력하면 된다.
2. pw 필터링 우회
- pw는 "/\d*\@\d{2,3}(31)+[^0-8]\!/"이 문자열 "d4y0r50ng"로 치환된다.- pw 정규표현식을 통해 "/\d*\@\d{2,3}(31)+[^0-8]\!/"를 치환시켜야 한다.
\d*: 0개 이상의 숫자를 의미
\@: "@" 문자를 의미
\d{2,3}: 2개 또는 3개의 숫자를 의미
(31)+: 31이 1회 이상 반복을 의미
[^0-8]: 0과 8 사이의 숫자를 제외한 문자를 의미
\!: "!" 문자를 의미
- 따라서 pw 입력 란에 1@123319!+1+13을 입력하면 된다.
* 참고: https://devhacks.tistory.com/118
필터링을 우회한 값을 입력했더니 step 2로 넘어갈 수 있었다.
플래그가 ./dream/flag.txt 에 있다고 했으므로 해당 파일의 내용을 읽기 위해
cat ../dream/flag.txt를 입력했더니 에러라고 떴다. 필터링이 있는 것으로 추측된다.
다시 step2.php 파일의 내용을 확인해봤더니
flag라는 단어를 필터링하는 것을 알 수 있었다.
필터링을 우회하기 위해서 cat ../dream/?lag.txt을 입력했다.
플래그를 획득할 수 있었다!
'CTF > Dreamhack' 카테고리의 다른 글
[Dreamhack] command-injection-chatgpt (0) | 2023.09.20 |
---|---|
[Dreamhack] simple-web-request (0) | 2023.09.16 |
[Dreamhack] shell_basic (0) | 2023.05.30 |
[Dreamhack] RSA-wiener (1) | 2023.05.30 |
[Dreamhack] proxy-1 (0) | 2023.05.24 |