꿈이 너무 많은 한 대학생의 공간

Webhacking.kr 11번 문제풀이 본문

정보보안 공부/Webhacking.kr(old)

Webhacking.kr 11번 문제풀이

청울울청 2020. 5. 19. 12:48

오늘은 다시 Webhacking 문제로 돌아왔습니다.

딱히 Reversing.kr 2번 문제의 Serial 개념이 이해가 안가서 그런건 아니구요...

아무튼 소스를 다시 봅시다.

php로 쓰여져 있네요. 저는 php를 공부를 안해서 이런거 풀때마다 문서를 찾아보면서 합니다.

핵심 코드를 살펴보면, $pat 변수 안에 php 정규식을 담습니다.

그 후 preg_match 함수에서 val 파라미터가 $pat 정규식 일치하는지 아닌지를 판단합니다.

php 정규식을 해석해보겠습니다. php에서 정규식은 / 문자로 감싸져야 합니다.

[1-3] 은 1부터 3 범위 안에 있는 숫자가 들어가야 한다는 뜻입니다. 그러면 [1-3] 은 1, 2, 3 셋 중에 하나가 들어가면 되겠네요. 뒷 부분도 마찬가지입니다. [a-f] 는 a부터 f 범위 안의 알파벳이 들어가야 합니다. 즉, a, b, c, d, e, f 중 하나가 들어가야 하겠네요. 그 뒤 {5} 는 반복해야하는 횟수를 나타냅니다. 즉 [a-f] 정규식이 5번 반복, a, b, c, d, e, f 중 아무 문자가 5번 반복되면 됩니다. 뒤의 _.* 부분을 하나하나 나눠보면, _, ., * 가 됩니다. _는 단순한 문자입니다.

. 은 \n(공백문자)를 제외한 아무 문자를 뜻하고, *는 앞의 정규식의 0번 이상 반복되어야 한다 라는 의미입니다.

즉 . 정규식을 0번 이상, 아무 문자열을 0번 이상 입력하면 됩니다. 그 뒤의 $_SERVER[REMOTE_ADDR]는 클라이언트의 IP 주소를 가져오는 것입니다. 공유기 IP 주소가 아닌, 고유적인 공인 주소가 필요합니다. 네이버에서 내아이피 등을 검색해 자신의 IP를 가져오세요. 그 뒤도 동일하네요. \t는 탭 문자입니다. 즉 \tp\ta\ts\ts 는 p     a     s    s 와 같은 형태가 되겠네요. URL 상에서는 탭키가 적용되지 않으니, \t를 입력해야 하는데, URL 상에서는 인코딩이 되야 하니 인코딩을 돌려줍시다. 인코딩을 돌리면 \t는 %09 이므로 %09p%09a%09s%09s 등의 형식으로 입력해야 하네요.

자, 정규식 표현을 모두 해석했으니 이제 풀어보도록 할게요. 아래의 정규식은 예시입니다.

2abcde_(IP주소)%09p%09a%09s%09s 

위와 같이 하면 정규식이 성립하겠죠? 직접 입력해보도록 할게요.

? 뒤에는 파라미터입니다. $_GET['val'] 는 URL의 val 파라미터를 가져오는 명령어니 이렇게 입력해주세요.

(아이피) 창에는 자신의 아이피를 입력해주세요.

성공!

Comments