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 |