티스토리 뷰
문제에 들어오면 ID와 PW를 입력할 수 있는 칸이나오고 Join버튼을 누를 수 있게 되어있다.
인젝션문제인가 해서 여러가지를 넣어보던중 아래와 같은 알림창이 뜨는 것을 확인했다.
그래서 뭔가 검증절차가 있구나라고 생각해서 JavaScript내용을 확인하기위해 소스코드를 확인했다.
다행히 소스코드는 바로 확인할 수 있었고,
JavaScript 검증 코드와, Hint를 얻을 수 있었다.
검증 코드의 경우에 id 와 pw가 동일하면 위에서 봤던 알림창을 띄워주고
다르다면 JavaScript 코드에서 submit을 해준다.
근데 이와 상반되게 힌트에서는 id와 pw가 동일해야 한다고 한다.
한마디로 이 JavaScript 함수 chk_form()을 무시해야 이 문제를 해결할 수 있다는 말이다.
두가지 풀이로 진행했는데,
1. Browser의 Console기능을 이용.
2. Burp Suite를 이용.
1. Browser의 Console기능을 이용.
ID와 PW를 입력할 수 있는 칸에 동일한 문자열을 집어넣는다.
그리고 Join을 누르면 검증절차를 거치고 Submit이 되기때문에 검증절차에서 필터링된다.
때문에 Browser의 Console창에서 직접 document.web02.submit()을 입력해 바로 Submit해주었다.
그러자 아래와 같이 JavaScript 검증을 진행하지 않고 곧장 Submit되는 것을 확인할 수 있었다.
2. Burp Suite를 이용.
시나리오는 우선 ID와 PW를 서로 다르게해서 JavaScript 검증절차를 무사히 통과한다.
그리고 Submit되는 Request패킷을 캡쳐해서 Data를 수정해서 ID와 PW를 같은 값으로 넘겨준다.
위 사진과 같이 서로다른 값을 넣고 Join버튼을 누르면 정상적으로 Submit이 된다.
위 사진처럼 Request패킷을 캡쳐해서 아래 사진과 같이 ID와 PW를 같은 데이터로 수정했다.
그러자 서버단에서는 같은 데이터를 입력한 것으로 생각해서 Authkey를 출력해준다.
'Web > Wargame' 카테고리의 다른 글
[Dreamhack] spring-view Writeup (0) | 2021.01.17 |
---|---|
[XCZ.KR] PROB18(Web) (0) | 2019.06.27 |