단순한 정규표현식 문제입니다.



$pat="/[1-3][a-f]{5}_.*39.120.150.6.*\tp\ta\ts\ts/";

차례대로 해석을 하자면 다음과 같습니다.

  [1-3]   : 1~3 중 하나의 문자

  [a-f]    : a~f 중 하나의 문자

  {5}      : 앞의 문자 5회 반복

  .         : 줄 바꿈을 제외한 문자 하나

  *        : 앞의 문자 0회 이상의 횟수

  \t      : TAB문자 (Hex값 %09)



알맞게 입력하시면 성공하게 됩니다.




[참고]


PHP 정규표현식 상세: http://ir.php.net/manual/kr/regexp.reference.php

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

[webhacking.kr] prob 14  (0) 2018.12.04
[webhacking.kr] prob 12  (0) 2018.12.04
[webhacking.kr] prob 10  (0) 2018.12.04
[webhacking.kr] prob 6  (0) 2018.12.04
[webhacking.kr] prob 5  (0) 2018.12.04



소스를 확인해보면 onclick 부분에 <a>태그를 클릭할 때마다 posLeft가 1씩 증가하고, 800이 되었을 때 href가 활성화됩니다.

임의로 ?go=800 으로 이동해보면 "no hack"이라는 문구가 나오게 됩니다.



결국 800번 클릭하면 해결이 되는 문제인데 800번을 누르기 쉽지 않으니 임의로 799로 바꾼 후 한번 클릭해 주면 문제가 해결됩니다.




Chrome에서는 클릭을 해도 이동이 되지 않으니 explorer에서 하시면 쉽게 해결할 수 있습니다.


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

[webhacking.kr] prob 12  (0) 2018.12.04
[webhacking.kr] prob 11  (0) 2018.12.04
[webhacking.kr] prob 6  (0) 2018.12.04
[webhacking.kr] prob 5  (0) 2018.12.04
[webhacking.kr] prob 4  (0) 2018.12.04

ID/PW가 각각 보여지고 있습니다.



guest/123qwe를 가지고

  ① base64 encode 20회

  ② 1~8 숫자를 특정 문자열로 치환

  ③ cookie 값으로 저장

을 하고 있습니다.



아래 소스에서는 위에 코드를 역으로 하고 있습니다.

  ① cookie 값을 가져옴

  ② 특정 문자열을 1~8로 치환

  ③ base64 decode 20회

  ④ 해당 값이 admin/admin이면 성공




쿠키 값을 확인해보면 password와 user라는 이름으로 특정 값이 있습니다.

이 값들은 기존에 설정되어 있는 값인 guest/123qwe의 값들입니다.



admin/admin의 값이 필요하므로 해당 값을 base64 encode 20회 후 문자열 치환을 해주고 쿠키 값을 변경해주면 성공하게 됩니다.


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

[webhacking.kr] prob 11  (0) 2018.12.04
[webhacking.kr] prob 10  (0) 2018.12.04
[webhacking.kr] prob 5  (0) 2018.12.04
[webhacking.kr] prob 4  (0) 2018.12.04
[webhacking.kr] prob 1  (0) 2018.12.04



Login 버튼을 누르면 로그인 폼이 나오게 됩니다.

a/a라는 값을 넣었을 때 id가 admin이여야 한다는 메시지가 나오게 됩니다.




그래서 Join버튼으로 가입을 해보고자 눌러보면 Access_Denied라는 alert창이 나오게 됩니다.



소스를 보시면 버튼을 누르면 alert 메시지를 띄우는 script가 작성되어 있었습니다.

Login 버튼을 누를 때는 mem/login.php 로 이동하는 것을 보고 URL에 mem을 추가해봤습니다.



URL에 mem을 추가해서 이동해보니 join.php와 login.php가 있었고 join.php로 이동해봅니다.



join.php로 이동하면 빈 화면이 반겨주게 되는데 소스를 확인해보면 script로 아래와 같은 문자열이 적혀있었습니다.


복잡해 보이지만 해석해보면

① document.cookie의 oldzombie 라는 값이 있는가?

② document.URL의 mode=1 이 있는가?

입니다.



cookie값에 oldzombie를 추가하고, URL의 ?mode=1를 추가해주면 join 폼이 나오게 됩니다.



admin으로 가입을 시도해보면 해당 계정은 이미 존재한다고 나옵니다.



소스를 확인해보면 id의 길이가 5로 제한되어 있는 것으로 보아 DB에 저장되는 값은 5글자로 제한되어 있다고 짐작할 수 있습니다.

해당 글자 수를 6으로 늘리고 id에 admin과 공백을 넣어주고 가입을 시도하면 DB에 저장될 때 앞 5자리만 저장하고 뒤에 값들은 버리게 됩니다.




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

[webhacking.kr] prob 11  (0) 2018.12.04
[webhacking.kr] prob 10  (0) 2018.12.04
[webhacking.kr] prob 6  (0) 2018.12.04
[webhacking.kr] prob 4  (0) 2018.12.04
[webhacking.kr] prob 1  (0) 2018.12.04

해당 문자열을 보면 알파벳 대소문자와 숫자로만 이루어져 있고, 맨 마지막에 =가 있는 것을 보니

base64로 encoding 되어 있다는 것을 알 수 있습니다.



해당 값을 decode하면

c4033bff94b567a190e33faa551f411caef444f2 이 값이 되는데 글자 수가 40자리이고 알파벳과 숫자로 이루어져 있는 것을 보아

sha1으로 encoding 되어 있는 것을 알 수 있습니다.


해당 값을 decode하면

a94a8fe5ccb19ba61c4c0873d391e987982fbbd3 이 값이 나오고 다시 sha1으로 decode하면


읽을 수 있는 password를 얻을 수 있습니다.



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

[webhacking.kr] prob 11  (0) 2018.12.04
[webhacking.kr] prob 10  (0) 2018.12.04
[webhacking.kr] prob 6  (0) 2018.12.04
[webhacking.kr] prob 5  (0) 2018.12.04
[webhacking.kr] prob 1  (0) 2018.12.04



index.phps로 이동을 해서 소스를 확인해봅니다.

사용자의 Cookie인 user_lv의 값이 5보다는 큰 값이고, 6보다 크거나 같으면 풀리지 않습니다.



크롬의 개발자 모드로 확인을 해보면 user_lv이라는 쿠키 값이 1로 설정되어 있는 것을 확인할 수 있습니다.

해당 쿠키 값을 5보다는 크지만, 6보다는 작은 값으로 만들어 주면 됩니다.




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

[webhacking.kr] prob 11  (0) 2018.12.04
[webhacking.kr] prob 10  (0) 2018.12.04
[webhacking.kr] prob 6  (0) 2018.12.04
[webhacking.kr] prob 5  (0) 2018.12.04
[webhacking.kr] prob 4  (0) 2018.12.04

+ Recent posts