webhacking.kr 사이트의 5번 문제를 가면 다음과 같이 나타난다.
Login 버튼과 Join 버튼만 존재하는데
Join 버튼을 누르면 다음과 같은 화면을 볼 수 있다.
권한이 없다고 하니 Login 버튼을 누르자.
그럼 위와 같은 화면이 나타나는데 형식이 ID와 PW를 입력하는 것 같다.
ID와 PW를 모르기 때문에 일단 아무 값이나 넣어보자
그러면 위와 같은 화면이 나타난다.
admin으로 로그인 해야 되는 것 같으니 admin으로 PW는 아무값이나 넣어보자
그러면 PW가 틀렸다고 나온다.
admin의 패스워드를 찾아야 하는 것 같다.
PW에 SQL 쿼리문을 이용해 인증을 우회해 보자.
PW에 1' or '1' = '1 을 입력해 보면 위와 같은 화면이 나타난다.
SQL Injection 문제는 아닌 것 같은 기분이 든다.
그럼 처음 페이지에 가서 소스를 보도록 하자.
소스를 보다보면 함수가 두개 나온다.
Login 버튼을 눌렀을 때 move() 함수가 호출되고, Join 버튼을 눌렀을 때는 no() 함수가 호출된다.
move() 함수를 살펴보면 경로가 나와있다.
mem/login.php
Login 이라서 login.php 페이지로 넘어가는 것 같다.
Join은 join.php일 것 같으니 mem/join.php 페이지로 넘어가 보자.
주소창에 mem/join.php를 입력하면 다음과 같은 화면이 나타난다.
검은색 화면이 나타나고, 소스를 보니 스크립트로 뭔가 작성되어 있는 게 보인다.
이를 burpsuite로 보면 다음과 같다.
뭔가 굉장히 복잡하게 난독화 되어 있는 것이 보인다.
코드를 보면 if 문이 두개, else문 한개가 있다.
if문 두개를 보면 하나는 bye, 나머지 하나는 access_denied 알림을 띄운다.
두 개의 if문에서 걸리지 않으면 else문이 실행되는데 else문 안에 있는 코드가 실행되어야 할 것 같다.
난독화 되어 있는 코드는 신경 쓰지말고
burpsuite에서 else 문에 있는 코드를 첫 번째 if문에 넣고 나머지 조건문들은 제거하자.
burpsuite에서 수정할 수 있는데 위 그림처럼 수정을 하고 해당 데이터를 전달하면
다음과 같은 화면을 볼 수 있다.
admin으로 회원가입을 해보도록 하자.
위와 같이 입력을 하면 결과 화면은 다음과 같이 나타난다.
admin은 존재한다는 메시지가 출력이 된다.
다시 Join 페이지로 가서 ID를 admin+로 해서 등록하려고 하면 입력이 되지 않는다.
이는 길이 제한을 문자5개로 뒀기 때문이다.
일단 admin으로 두고 burpsuite로 admin+로 변경해 전달해 보자.
* 웹에서 +는 띄어쓰기와 같은 기능을 한다.
위 그림과 같이 id 값을 변경하여 전달하면 웹페이지는 다음과 같이 나타난다.
가입이 됐다는 화면이 출력이 된다.
그럼 이제 login.php 페이지로 넘어가서 로그인을 해보자.
ID = admin, PW = admin
그러면 문제가 풀린다.
'Wargame > webhacking' 카테고리의 다른 글
[webhacking.kr] 7번 문제 (0) | 2017.05.04 |
---|---|
[webhacking.kr] 6번 문제 (0) | 2017.05.02 |
[webhacking.kr] 4번 문제 (0) | 2017.05.02 |
[webhacking.kr] 3번 문제 (0) | 2017.05.02 |
[webhacking.kr] 1번 문제 (0) | 2017.05.02 |