반응형


문제에 접근하면 이렇게 버튼이 2개가 존재한다.

Join을 누르면 Access_Denied 라는 메시지와 함께 아무런 동작을 하지 않는다.

Login 버튼을 누르면 mem/login.php에 접근을 한다.

그리고 로그인창이 뜨는데 여기에 test / test로 로그인을 시도하였다.



그 결과 위와 같이 admin이 아닌 id라며 Access Denied가 출력된다.


문제는 admin으로 회원가입을 하면 될 것으로 보인다.

게싱을 하여 mem/join.php에 접근을 시도해보았다.


접근은 되는데 검은 화면 뿐이다.

소스코드를 보면 아래와 같은 자바스크립트가 존재하는 것을 볼 수 있다.



보기가 어려워 JSbeautifier에 넣었다.


그 결과 변수에 값을 넣고 그 값으로 JS를 만든 것이다.

조건이 2가지가 있는데 첫번째는 document.cookie 내에 oldzombie가 존재하는가를 확인한다.


이를 위해 chrome의 EditThisCookie 라는 확장 프로그램을 이용하여 test라는 cookie를 만들고 그 안에 oldzombie를 넣어주었다.


그리고 다시 join.php에 접근하면 또 다시 access_denied가 뜬다.

여기서 두번쨰 조건인 document.URL에 mode=1이라는 문자열이 있는지를 확인하는 조건을 만족시켜주기 위해 http://webhacking.kr/challenge/web/web-05/mem/join.php?mode=1로 접근하였다.


그 결과 아래와 같이 회원가입하는 창이 떴다.


여기서 admin으로 가입하면 되는 것으로 보인다.

처음에는 소문자, 대문자 비교를 하지 않는 것으로 푸는것으로 생각하였는데 생각해보니 mysql은 소문자, 대문자 비교를 하지 않기 떄문에 Admin으로 가입을 시도했을 떄 admin으로 인식하여 중복체크를 우회할 수 없다.


admin이라는 계정으로 중복체크를 우회해서 가입해야하므로 구글링을 조금만 해보면 취약점이 나온다.

( 참고 : https://crehacktive3.blog.me/221119849411 )


이를 이용하여 id에 admin, pass에 123을 넣은 뒤 burp 상에서 공백을 주고 전송시키면 회원가입이 된다.

다시 login.php에 가서 admin / 123으로 로그인을 시도하면 클리어~

반응형

'Solve Problem > Webhacking.kr' 카테고리의 다른 글

[webhacking.kr] 8번 문제  (0) 2018.03.05
[webhacking.kr] 6번 문제  (0) 2018.03.05
[webhacking.kr] 4번 문제  (0) 2018.03.05
[webhacking.kr] 3번 문제  (0) 2018.03.05
[webhacking.kr] 2번 문제  (0) 2018.03.04
블로그 이미지

rootable

,