반응형

문제 다운로드했을 때, 

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
SiriusJ

,