11번 문제 정규표현식을 이해하고 있는가? 를 물어보는 문제이다. 300점은 약간 후한 점수인듯 하다.

if 조건문이 참이면 password를 echo한다. 조건은 preg_match("/[1-3][a-f]{5}_.*211.206.236.4.*\tp\ta\ts\ts/",$_GET[val])

preg_match()는 패턴에 주어진 정규 표현식에 일치하는지 검색하는기능을 한다.


이제 쓰인 정규표현식 하나하나 알아보자. 


1. 문자클래스 [ ]

문자클래스로 만들어진 정규식은 "[ ] 사이의 문자들과 매치"라는 의미를 갖는다.

즉, [abc]라는 표현식의 의미는 "a, b, c 중 한 개의 문자와 매치"를 뜻한다.

[ ] 안의 두 문자 사이에 하이픈(-)을 사용하게 되면 두 문자 사이의 범위를 의미한다. ex) [a-zA-Z] : 알파벳 모두, [0-9] : 숫자 모두

문자 클래스 내에 (^)와 같은 문자가 사용 되면 not이라는 의미를 갖게 되어 [^0-9]이라 하면 숫자가 아닌 문자만 매치라는 뜻이다.


2. {m, n} 반복

{m, n}이라 하면 바로앞 문자의 반복횟수가 m이상 n이하인 문자를 매치한다.

{5}이런 식으로 써준다면 ex) ca{5}t = caaaaat 을 나타내는 것이다.


3. Dot(.)

정규 표현식의 Dot(.)은 줄바꿈 문자인 \n을 제외한 모든 문자와 매치된다.

a.b = "a + 모든문자 + b" 라고 할 수 있다.


4. 반복(*)

ca*t은 a가 0개부터 무한개까지의 문자열을 모두 매치한다

정규식 ca*t 문자열 ct

 "a"가 0번 반복되어 매치

정규식 ca*t 문자열 caat

"a"가 2번(0번 이상) 반복되어 매치


5. \t

\t는 탭공백을 뜻하고 url인코딩으로 표현하면 %09이다 


이 모든 규칙들로 

"/[1-3][a-f]{5}_.*211.206.236.4.*\tp\ta\ts\ts/"

을 풀고 GET방식으로 val변수에 올바른 값을 넣어준다면 클리어




'Web Hacking > Webhacking.kr' 카테고리의 다른 글

Webhacking.kr 49번  (0) 2018.05.04
Webhacking.kr 46번  (0) 2018.05.04
Webhackin.kr 43번  (0) 2018.04.30
Webhacking.kr 5번  (0) 2018.04.30
Webhacking.kr 10번  (0) 2018.04.27

+ Recent posts