본문 바로가기
hacking/web

[Dream hack] phpreg

by ilp 2025. 3. 3.
반응형

https://dreamhack.io/wargame/challenges/873

 

phpreg

Description php로 작성된 페이지입니다. 알맞은 Nickname과 Password를 입력하면 Step 2로 넘어갈 수 있습니다. Step 2에서 system() 함수를 이용하여 플래그를 획득하세요. 플래그는 ../dream/flag.txt에 위치합니

dreamhack.io



1. step1

처음 서버에 접속하면 이러한 화면이 뜬다. nicknamepassword를 잘 입력해야 step1을 통과 할 수 있다.

 

먼저 웹의 코드를 본다.

이 부분이 핵심 부분이다.

 

1-1. name

  • 정규표현식 분석 ('/nyang/i')
    • 패턴: 문자열 'nyang'를 매치한다.
    • 프래그: 'i'플래그는 대소문자 구분없이 검색한다.
  • 대소문자 구분 없이 'nyang'를 빈 문자열로 교체한다.(preg_replace("/nyang/i", "", $input_name))
  • id는 'dnyang0310'이어야 한다. ( '$name === "dnyang0310"')
    • 조건에 맞는 id: dnynyangang0310
    • nyang가 빈 문자열로 바뀌기 떄문에 nyang를 한번 더 써주어야 한다.
      한번 더 써줄떄 nyang가 하번만 나오게 한다.

1-2. password

  • 정규 표현식 분석 ('/\d*\@\d{2,3}(31)+[^0-8\"]\!/')
    • '\d*': 0개 이상의 숫자 매치
    • '\@': 특수문자 '@' 매치
    • ' \d{2,3}': 숫자가 2개 이상 3개 이하일뗴 매치
    • ' (31)+': '31'이 1번 이상 일때 매치한다.
    • '[^0-8\"]': 0에서 8까지숫자와 특수문자 "를 제외한 문자를 하나 나타낸다.
    • '\!': 특수문자 '!' 매치한다.
    • 문자열예시: 0@00319!
  • 정규 표현식 분석 ('/[a-zA-Z]/')
    • 영어 대소문알파벳중 하나를 매치한다
    • 그래서 pasword에는 영어 알파벳이 있을 수 없다.
  • password는 'd4y0r50ng+1+13'이어야 한다.($pw === "d4y0r50ng+1+13")
    • 조건에 맞는 password: 0@00319!+1+13
    • 앞에서 정규 표현식에 매치하면d4y0r50ng로 바꿔주기 떄문에 
      알파벳을 쓰지 않고 password를 작성할 수 있다.

 

2. step2

step1이 끝나면 이러한 step2로 넘어온다.

 

코드르 보니 system함수가 있어서 리눅스 명령어를 사용해서 접근햇다.

 

먼저 ls로 디렉토리나 다른 파일이 있는지 확인해 보앗다.

하지만 flag를 찾는데 도움이 될만한건 없었다.

 

그래서 상위 디렉토리로 접근 해 보았다. (ls ../)

그래더니 dream이라는 새로운 디렉토리가 있었고 dream에 접속 해보았다. (ls ../dream)

 

dream안에는 flag.txt 파일이 있었다. 

이제 이 파일의 내용을 출력해야한다.

 

하지만 여기서 코드를 다시 봐야 한다.

이러한 코드가 있는데 'flag'가 입력되면 'Error!'을 출력하라고 한다.

  • 정규 표현식 분석 (/flag/i)
    • 'flag': 문자열 'flag'를 찾는다.
    • 'i': 대소문자를 구별하지 않는다.
    • 'flag'대소문자 구별없이 매치하는 뜻이다.

 

그래서 'flag'를 사용하지 않고 'flag'파일의 내용을 출력해야 한다.

나는 '../dream' 안에 모든 파일을 출력하는 명령어를 사용하는 방법을 생각했다.

'cat ../dream/*'이렇게 작성하면 ' ../dream '이 디렉토리안에 모든 파일 내용을 출력할 수있다.

그러면 이 나온다.

 

더보기

DH{ad866c64dabaf30136e22d3de2980d24c4da617b9d706f81d10a1bc97d0ab6f6}


반응형

'hacking > web' 카테고리의 다른 글

[Dream hack] ex-reg-ex  (0) 2025.03.03
[Dream hack] command-injection-1  (0) 2024.11.03
[Dream hack] Background: Web  (0) 2024.08.06
[Dream hack] Introduction  (0) 2024.06.04