본문 바로가기

CTF 문제풀이

드림핵 phpreg

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

 

phpreg

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

dreamhack.io

문제에 들어가서 소스코드를 보기 전에 aa bb로 쳐봤다.

패스워드에 알파벳이 들어가면 안되나보다.

 

파일을 열어봤다.

index 파일에서는 마땅한 단서를 얻지 못했다.

pw filtering에서 아이디와 패스워드를 구할 수 있었다.

 

name을 보면 nyang 뒤에 i가 붙어있는데 이는 대소문자를 구분하지 않고 nyang 문자를 빈문자열로 인식한다.

내가 얻고 싶은 값은 dnyang0310이므로

nyang 문자열 사이에 해당 문자를 한번 더 집어넣어 입력해야 한다.

나는 dnyanyangng0310 이 값을 넣었다.

 

아까 분명 패스워드에 알파벳이 들어가면 안되는걸 알았는데 패스워드에 알파벳이 있다.

알파벳을 숫자로 치환해야 할 것 같다만.... 방법을 모르겠어서 구글링을 통해 해결했다.

 

  1. \d: 0에서 9까지의 범위의 한 자리 숫자를 의미한다.
    *는 문자 또는 숫자가 0개 이상 나타나는 것을 의미한다.
    -> 따라서 0~9 사이의 숫자가 0개 이상 나타나야 한다.
  2. \@: @ 문자를 매치.
  3. \d{2,3}: {2, 3}은 앞에 작성한 표현을 2~3회 반복하라는 의미한다.
    -> 0~9 사이의 숫자 2~3회 후에 31을 쓰면 된다.
  4. (31)+: 31 문자열이 한번 이상 반복.
  5. [^0-8]: 0부터 8까지의 숫자를 제외한 문자를 매치.
  6. \!: ! 문자를 매치.

최종적으로 123@12319!+1+13 이런 값이 나온다.

 

스텝1을 넘겼다. 

 

문제에서 플래그는 ../dream/flag.txt  여기에 있다고 하는데

cmd 필터링쪽을 보면 flag를 쳤을 때 에러가 뜬다. 

따라서 fla*로 바꿔서 쳤다. 

파일 확인 명령어는 cat이다.

cat ../dream/fla*.txt

 

성공이다!

 

 

'CTF 문제풀이' 카테고리의 다른 글

드림핵 🌱 simple-web-request  (0) 2024.05.15
드림핵 pathtraversal  (0) 2024.05.15
드림핵 850번 Flying Chars  (0) 2024.05.01
드림핵 267번 devtools-sources  (0) 2024.04.03
드림핵 96번 carve party  (0) 2024.04.03