DongDD's IT

[webhacking.kr] Level 11 본문

Wargame/webhacking.kr

[webhacking.kr] Level 11

DongDD 2017. 9. 30. 16:04

[webhacking.kr] Level 11




문제에 들어가니 "Wrong"이라는 메시지와 함께 다음과 같은 문자만 써있었다.

$pat이라는 변수를 설정하고 preg_match라는 함수를 통해 GET방식으로 받은 val과 비교하는 형태인 것 같다.

preg_match 함수에 대해 잘 몰라서 찾아보았다.


ref) preg_match(a,b)

- string b가 a라는 정규표현식에 해당하는 문자열인지 확인하는 함수


정규표현식에 대해서 어느정도는 알고 있지만 모르는 부분이 있어서 좀 더 알아본 후 풀어보았다.


먼저 [1-3]은 1~3의 숫자 중 하나가 들어간다는 의미로 쓰였고 마찬가지로 [a-f]도 a~f까지의 알파벳 중 하나가 들어간다는 의미이다.


{}와 *에 대해서는 잘 몰라서 찾아보았다.


찾아보면서 {}에 대해 여러가지를 보아서 함께 정리해보았다.

1) {N} : 앞의 []를 정확히 N번 일치시켜야 한다는 의미다. 즉, a~f까지의 알파벳 중 아무거나 5번 사용하면 되는 것이다.

2) {N,} : 최소한 N번은 일치시켜야 한다는 의미. 즉, N번이상이면 되는 것이다.

3) {N,M} : N번이상 M번 이하만큼 만족시키면 된다는 의미이다.


*은 a*b일 경우 a,b를 0번 이상 반복하면 된다는 뜻이라고 한다.


이 문제에서는 0번 이상이기 때문에 0번으로 사용하는 것이 짧게 만들 수 있을 것 같았다.


이런식으로 정규표현식에 맞춰서 문자열을 만들어준 후 get방식으로 val 변수에 넣어 넘겨주어 통과할 수 있었다.









**************     Answer & Flag     **************




위에서 생각한대로 정규표현식에 맞춰 문자열을 만들어 GET방식으로 val변수에 넣어 넘겨주니 문제에 통과할 수 있었다.



정규표현식이란 말은 많이 들어봤지만 기본적인 정규표현식밖에 몰랐었는데 이번 기회를 통해 정규표현식에 대해 좀 더 알 수 있는 계기가 된 것 같다.

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

[webhacking.kr] Level 10  (0) 2017.11.19
[webhacking.kr] Level 3  (0) 2017.11.11
[webhacking.kr] Level 12  (0) 2017.09.27
[webhacking.kr] Level 41  (0) 2017.09.24
[webhacking.kr] Level 42  (0) 2017.09.12
Comments