일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Buffer Overflow
- OS
- pwnable
- Shell code
- Lord of BOF
- webhacking
- Spring
- 정보처리기사 실기
- 네트워크
- Spring MVC
- Spring Framework
- 워게임
- 해킹
- System
- BOF
- 정보보안기사 실기
- stack overflow
- Operating System
- hacking
- webhacking.kr
- 정보보안기사
- SQL
- 웹해킹
- system hacking
- 운영체제
- PWN
- wargame
- Payload
- Pwnable.kr
- LOB
- Today
- Total
DongDD's IT
[webhacking.kr] Level 11 본문
[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 |