Beginner

phpreg

web
  • 문제 정보
  • 풀이 127
  • 난이도 투표 39
  • 질문 7
  • 최근 풀이자 2710
  • 댓글 9
해당 문제는 Dreamhack CTF Season 3 Round #6 (🌱Div2) 에 출제된 문제입니다.

문제 설명

Description

php로 작성된 페이지입니다.

알맞은 Nickname과 Password를 입력하면 Step 2로 넘어갈 수 있습니다.

Step 2에서 system() 함수를 이용하여 플래그를 획득하세요.

플래그는 ../dream/flag.txt에 위치합니다.

플래그의 형식은 DH{...} 입니다.

문제 수정 내역

2023.10.20 소스코드 일부가 패치되었습니다.

출제자 정보

avatar
Dreamhack
대표 업적 없음

First Blood!

avatar
사용자
해결사
출제된 지 7분 만에 풀이 완료!

난이도 투표 39

질문 7

문제 풀이에 어려움이 있으신가요?
커뮤니티에서 문제에 대한 질문하고 답변 얻기
PHPreg 문제 오류 판단 질문
안녕하세요. 열심히 공부 하고 있는 사람입니다. 다름이 아니라 "PHPreg" 문제의 오류가 있는 것으로 판단되어 이렇게 글을 작성합니다. 제가 아직 잘 몰라 잘못된 판단을 한 것인지 아니면 문제의 오류가 있는 것인지 객관적인 판단 부탁드립니다! https://regexr.com/ 라는 정규표현식 사이트를 이용하여 step1 문제를 풀고 있었습니다. $name = dnynyangang0310 / $pw = @9231"!+1+13 로 하니 step1 이 통과 되었습니다. preg_replace 로 dnynyangang0310 -> dnyang0310 / @9231"!+1+13 -> d4y0r50ng+1+13로 잘 되는것도 확인하였습니다. 그러나 step2 에서 cat ../dream/fl* etc.. 별에 별걸 다 해봤는데도 계속 "Wrong nickname or pw" 라는 메시지만 뜰 뿐 별 다른 소득이 없었습니다. 5시간동안 포기 안하고 풀다가 결국 코인을쓰고 풀이를 보았습니다. 그러다 하는 방식이 다를바가 없었으나 왜 안되나 연구를 하는 도중 정규표현식이 달라 step2에서 안풀린거였습니다. 여기서 이상한게 왜 @9231"!+1+13 << 이 정규표현식으로 step1도 풀렸으며 RegExr에서도 잘 대체되었는데 step2에서 cat 명령어를쓰면 그제서야 "Wrong nickname or pw" 라는 문구가 뜨는지 도저히 이해를 안되는 상황입니다. 제가 빠트린 것이 있다면 도움을 주시면 낮은자세에서 배우겠습니다. 혹시나 시간 되시면 제가 적은 id 및 pw로 테스트 한번 해주시면 감사하겠습니다. 긴글 읽어주셔서 감사합니다.
avatar T0pCcr4t
정규식 표현 확인 요청
안녕하세요. 문제 소스 파일을 다운 받아서 우회해야 하는 구간을 확인 했습니다. if (preg_match("/[a-zA-Z]/", $input_pw)) { echo "alphabet in the pw :("; } else{ $name = preg_replace("/nyang/i", "", $input_name); $pw = preg_replace("/\d*\@\d{2,3}(31)+\!/", "d4y0r50ng", $input_pw); if ($name === "dnyang0310" && $pw === "d4y0r50ng+1+13") { echo '<h4>Step 2 : Almost done...</h4><div class="door_box"><div class="door_black"></div><div class="door"><div class="door_cir"></div></div></div>'; 이 부분 같은데요 아이디가 틀리든 패스워드가 틀리든 Wrong nickname or pw 를 표시하니까 어떤 부분이 틀린지 몰랐습니다. 검색을 해보니까 https://regexr.com/864cu 해당 사이트에서 정규식 표현이 맞는지 아닌지 확인할 수 있다고 해서 활용했습니다 preg_replace 함수 원형을 찾아보니까 해당 정규표현식이 나오면 그것을 1회 정해진 값으로 변형하는 거 같았습니다. 그래서 input1=dnyangnyang0310&input2=31%401313131319%21%2B1%2B13 이렇게 요청을 보냈었는데요 혹시 몰라서 input1=dnyangnyang0310&input2=31@1313131319!+1+13 이렇게도 둘 다 보냈는데 Wrong nickname or pw 를 표시해서 당황스럽습니다. image.png image.png 이렇게 확인을 했는데요 Step 2 : Almost done... 부분이 나와줘야 될 거 같은데 Wrong nickname or pw 만 나와서... 어떤 부분을 놓치고 있는 걸까요?
avatar Bunnies_First_Revolution

최근 풀이자 2710

Juhyeon
대표 업적 없음
avatar
우빈
대표 업적 없음
cagea1
대표 업적 없음
신돌석
대표 업적 없음
먹척박사
대표 업적 없음
rmslslsld1
대표 업적 없음
국밥
대표 업적 없음
떼굴떼굴
대표 업적 없음
hackerk
대표 업적 없음
서도
대표 업적 없음

댓글 9

bb0bb1
대표 업적 없음
재밌다... php 표현을 몰라서 좀 헤맸지만.. 지난번 문제부터 뭔가 생각하는 방식, 시도하는 방식, 검색하는 방식들에 대해 익혀가는 느낌
avatar
코준
대표 업적 없음
good
avatar
T0pCcr4t
대표 업적 없음
포기만 하지 맙시다.
avatar
Zer0Luck
해결사
⛑️
르르는공주야
대표 업적 없음
냐옹
avatar
yoobi
워게임 고인물
good
donghyunkim
워게임: 20
gg
O_F
대표 업적 없음
good
avatar
HYN
Perfect 10
good