본문 바로가기

Wargame(hacking)/webhacking.kr

Webhacking.kr : old-11

Write-Up

 

해당 문제는 아래의 정규 표현식에 맞춰, val 값을 request하면 해결할 수 있다. 

 

<?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>");
?>

 

 

$pat 에 해당 하는 정규표현식 패턴은 아래와 같이 해석될 수 있다. 

 

[x-z] : range를 표현하며 x ~ z 사이의 문자를 의미한다.  ( 하이픈(-)은 두 문자 사이의 범위(from - to)를 의미 )

x{n} : 반복을 표현하며 x 문자가 n번 반복됨을 의미한다.

\t : tab 을 표현하며 탭 문자를 의미한다.

. : 모든 문자열(숫자, 한글, 영어, 특수기호, 공백 모두! 단, 줄바꿈X

* : 직전 문자 0번 이상 반복

 

 

최종 정답은 아래와 같다. 

 

?val=2abcde_.119.203.7.102.%09p%09a%09s%09s

+plus
?val=2cabcc_.....119.203.7.102.dot%09p%09a%09s%09s
?val=2cabcc_가119.203.7.102.dot%09p%09a%09s%09s

 

그림 1 (tab은 url 상에서 %09로 표현)

 

 

참고

 

https://codingeverybody.kr/php-preg_match-%ED%95%A8%EC%88%98/

 

PHP preg_match() 함수 – 개념 정리 및 사용 예제 - 코딩에브리바디

preg_match() 함수는 주어진 정규 표현식 패턴을 사용하여 문자열 내에서 일치(match)하는 부분을 찾아냅니다. 일치하는 패턴을 문자열에서 처음으로 발견되면 검색을 중단하고 1을 반환하고, 없으면

codingeverybody.kr

 


 

https://regexr.com/

 

RegExr: Learn, Build, & Test RegEx

RegExr is an online tool to learn, build, & test Regular Expressions (RegEx / RegExp).

regexr.com

 

위의 regexr 사이트를 통해 정규 표현식 패턴 일치 여부를 확인해 볼 수 있다. 

 

그림 2