웹해킹 11번 문제를 풀어보겠다.
해당 문제의 배점은 300point이다.
해당 문제를 클릭하면
다음과 같은 정보가 주어진다.
해당 힌트를 분석해보자.
$pat="/[1-3][a-f]{5}_.*CLIENT_IP.*\tp\ta\ts\ts/";
if(preg_match($pat,$_GET[va])) { echo("Password is ????");}
간단하게 해석해보면
$pat란 변수에 정규표현식을 담고
GET방식으로 전해진 val이라는 변수에
해당 정규표현식에 맞는 문자열이 전해지면, Password를 출력하는 것으로 확인된다.
정규표현식을 하나하나 살펴보자.
1. [1-3]
[1-3] : 1~3사이의 문자 중 하나를 찾음
예시) 1, 2, 3
2. [a-f]{5}
[a-f]{5} : a~f사이의 문자 중 하나를 찾아 5번 반복한다.
예시) abcde, ababa. aaaaa
3. _
_ : 해당 문자 '_' 를 덧붙힌다.
예시) _
4. .*ClLIENT_IP
.*CLIENT_IP : 클라이언트의 접속아이피가 0번이상 반복(존재)하는 지 확인한다.
예시) 38.152.92.138
5. .*\tp\ta\ts\ts
.*\tp\ta\ts\ts : \t는 (Tab)을 의미하므로 해당 문자열은 (Tab)p(Tab)a(Tab)s(Tab)s의 형태의 정규식 표현이 존재하는 지 확인한다.
해당 정규식표현으로 이루어진 문자열은 다음과 같이 해석할 수 있으며,
정규식 표현의 추가적인 정보를 알고 싶을 수 있기에,
관련 링크를 남기겠다.
정규표현식 추가 설명 : http://www.nextree.co.kr/p4327/
결론적으로
"/[1-3][a-f]{5}_.*CLIENT_IP.*\tp\ta\ts\ts/"
해당 정규표현식으로 표현된 문자열을 조합하면
"2abcde_접속자의IP%09p%09a%09s%09s"
다음과 같은 형태로 표현된다
이때 %09는 tab문자를 url방식으로 인코딩한 것이다.
이제 문제를 풀어보자.
GET방식으로 해당 문자열을 전달한 후 url을 이동해보자.
정규표현식을 해석할 수 있다면 어렵지 않게 풀 수 있는 문제였다.
'IT > 웹 해킹(Web Hacking)' 카테고리의 다른 글
webhacking.kr [문제 13번] (1) | 2018.03.08 |
---|---|
webhacking.kr [문제 12번] (0) | 2018.03.07 |
webhacking.kr [문제 10번] (0) | 2018.03.06 |
webhacking.kr [문제 9번] (0) | 2018.03.04 |
webhacking.kr [문제 8번] (0) | 2018.02.27 |