본문 바로가기

IT/웹 해킹(Web Hacking)

webhacking.kr [문제 5번]




문제 5번을 풀어보겠다.





300point의 5번 문제를 클릭하자.





웹 페이지가 단순하게 두개의 버튼만을 가지고 있다.





로그인 페이지가 보이고


일반적으로 UI가 상단은 아이디 하단은 비밀번호로 생각되어





아무거나 치고 로그인 해보자.



예상했던 결과다 싶이 admin이 아닐경우 로그인이 되지않는다고 한다.



admin과 비밀번호를 입력한 후 로그인해보자.



이전과는 다른 메세지를 보인다.


그렇다면 한번 회원가입을 클릭해보자.




Join버튼을 누른결과 접근이 거부되었다는 메세지가 뜬다.



소스코드를 확인해보자.



소스코드를 확인하여보니 Join버튼 클릭시 당연히 no()라는 함수가 실행되어


'Acess_Denied'라는 메세지 박스를 띄운다. 


여기서 유의해봐야 할 점이


디렉터리의 구조이다.


login버튼 클릭시 들어가지는 곳이


mem/login.php인데 


해당 디렉토리를 살펴보면




해당 디렉토리의 구조를 살펴볼 수 있으며,


join.php라는 회원가입 페이지를 확인할 수 있다.


해당 페이지를 확인해보자



고장난 거 아니다.


해당 페이지에는 아무것도 보이지 않는다.



소스코드를 살펴보자.







난독화되어있는 것을 확인할 수 있다.



간단하게 Split기법만을 이용하여 난독화되어있음을 확인할 수 있는데,


귀찮지만 손으로 하나하나 풀어보겠다.




먼저 세미콜론 단위로 구분하여 변수선언과 실제 자바스크립트 코드들을 보기쉽게 정리해보자.


Line.4 ~ Line.46까지는 변수가 선언되어 있는 부분을 확인할 수있다.


크롬 개발자도구에서 자바스크립트 콘솔창을 이용하여 손수 해독해보겠다.




해당 과정을 거치고 나면





다음과 같은 소스코드를 얻게된다.


해당 소스코드를 분석해보면


5번 라인에서


해당 문서에 oldzombie라는 쿠키값이 있어야 한다.


10번 라인에서


해당 문서의 url에 mode=1이라는 값이 있어야한다.


그렇다면


해당 조건을 충족 시켜주자.









정상적으로 가입하는 페이지가 보인다.





제출을 눌러보자.



이런 이미 'admin'이라는 계정이 존재한단다.


spacebar를 하나 붙혀보자.


이것도 안된다.


아까 소스코드 분석할 때 maxlength=5로 설정되어 있는 것을 보았다.


이를 수정해주자.



다시 spacebar를 붙혀서


가입한 결과


정상적으로 가입이 완료되었다.






다시 돌아가서 


로그인 해본 결과



해당 문제 완료













'IT > 웹 해킹(Web Hacking)' 카테고리의 다른 글

webhacking.kr [문제 7번]  (0) 2018.02.25
webhacking.kr [문제 6번]  (0) 2018.02.24
webhacking.kr [문제 4번]  (0) 2018.02.23
webhacking.kr [문제 2번]  (5) 2018.01.28
webhacking.kr [문제1번]  (0) 2018.01.27