문제 다운로드했을 때,
index.php에서는 별다른 힌트없이 html 바디로 이루어진것을 확인할 수 있습니다.
다음으로 step2.php를 확인하자 아래와 같은 소스가 보이고 php로 필터링하는 주요 구문을 캡처했습니다.
input1, input2 태그를 통해 입력되는 값을 input_name, input_pw로 구분하는 것이 보이고,
pw filtering을 통해 패스워드 입력칸에 알파벳을 입력했을 때 echo로 패스워드 알파벳에 대한 필터링을 하고 있음이 확인됩니다.
더불어 else 구문에서는
name -> nyang은 공백으로 치환하고 있습니다. 그리고 pw는 preg_replace("/\d*\@\d{2,3}(31)+[^0-8\"]\!/" 를 d4y0r50ng로 치환하고 있습니다.
이때, name = dnyang0310, pw는 d4y0r50ng+1+13으로 보입니다.
따라서, name은 dn(nyang->공백치환)yang0310으로 즉 dnnyangyang0310 으로 해주면 되고,
pw는 /\d*\@\d{2,3}(31)+[^0-8\"]\!/+1+13 으로 입력해주면 될 것으로 보입니다.
이때, pw에 대한 구문을 해석해보면, 아래와 같습니다.
\d* -> 숫자 0개 이상
\@ -> @
\d{2,3} -> 숫자 2개 이상~3개 이하
(31) -> 31
[^0-8\"] -> 0~8을 제외한 나머지
\! -> !
즉, 패스워드는 1@11319!+1+13 으로 만들어 줄 수 있습니다.
그럼, 아래와 같이 step2로 문이 열리는 것을 확인할 수 있습니다.
이때, 플래그는 아래와 같이 얻을 수 있다고 합니다.
cat ../dream/flag.txt 를 해보니, error가 나옵니다.
확인해보니, 코드상에 아래와 같이 cmd filtering이 있는 것을 확인할 수 있습니다.
이를 우회하기 위해, flag에 대한 패턴을 아래처럼 바꾸어 줍니다.
flag 값을 획득했고, 이를 입력해줍니다.
'Security > 드림핵' 카테고리의 다른 글
session-basic 문제풀이 (0) | 2025.04.21 |
---|---|
dreamhack-tools-cyberchef 문제풀이 (0) | 2025.04.19 |
baby-linux 문제풀이 (1) | 2025.02.08 |
64se64 문제 풀이 (0) | 2025.02.08 |
rev-basic-1 문제풀이 (0) | 2025.02.02 |
WRITTEN BY