Wargame/webhacking.kr

Challenge old 11 (300)

마띠(쥔장) 2020. 1. 22. 05:05

일단 다짜고짜 틀렸다고 합니다

 

<?php
  $pat="/[1-3][a-f]{5}_.*$_SERVER[REMOTE_ADDR].*\tp\ta\ts\ts/";
  if(preg_match($pat,$_GET['val'])){
    solve(11);
  }
  else echo("<h2>Wrong</h2>");
  echo("<br><br>");
?>

핵심 코드를 보면 위와 같습니다

정말 solve(11)까지를 위해 단 두 줄밖에 없는데, 이해를 하나도 못했습니다

preg_match()함수에서는 pat 변수와 val 쿼리가 같을 때..

 

결국 pat 변수가 의미하는 바가 중요한데, 구글링 해보니 정규표현식이라고 합니다

정규표현식이란 특정한 규칙을 가진 문자열의 집할을 표현할 때 사용하는 형식 언어로,

프로그래밍 언어, text editor등의 문자열 검색/치환에서 쓰인다고 합니당

여기서 쓰이는 문자를 Meta문자라고 하는데, 이를 통해 정규표현식의 의미를 파악합니당

 

Meta문자 의미 모음; https://hamait.tistory.com/342

 

어쨌든, 아래 코드를 해석해보면,

$pat="/[1-3][a-f]{5}_.*$_SERVER[REMOTE_ADDR].*\tp\ta\ts\ts/"

[1-3] 1부터 3까지의 숫자 1개

[a-f]{5} a부터 f까지의 문자 5개

.*$_SERVER[REMOTE_ADDR].* 내 공인 IP 주소

\tp\ta\ts\ts에서 각 \t는 tab을 의미 = %09

 

이제 해당 페이지 URL에 위과 같이 넣어볼게요

 

728x90

'Wargame > webhacking.kr' 카테고리의 다른 글

Challenge old 15 (50)  (0) 2020.01.26
Challenge old 12 (250)  (0) 2020.01.22
Challenge old 10 (250)  (0) 2020.01.22
[미완] Challenge old 8 (350)  (0) 2020.01.19
Challenge old 7 (300)  (0) 2020.01.19