webhacking.kr old 01 문제 개요
먼저 문제에 들어가면 level 1과 view-source가 보인다. 문제 힌트를 얻기 위해 view-source를 클릭했다.
php로 되어있는 코드가 핵심으로 보인다. cookie를 이용하는 문제이다. 분석해보면
첫 번째 if는 is_numeric 함수를 이용해 쿠키가 숫자가 아니면 cookie 중 user_lv을 1로 설정한다.
두 번째 if는 user_lv이 4보다 같거나 크면, user_lv를 1로 설정한다.
세 번째 if는 user_lv이 3보다 크면 solve함수가 실행된다. 따라서 4보다 작고 3보다 큰 숫자를 user_lv로 입력하면 된다.
문제를 해결하기에 앞서 여기서 나온 cookie의 개념과 함께 쓰이는 session의 대해 알아보자.
쿠키(Cookie)란?
쿠키는 클라이언트(브라우저) 로컬에 저장된 작은 데이터 파일이다. 인증 유효시간을 통해 정해진 시간 동안만 사용할 수 있고, 클라이언트에 300개까지 저장이 가능하고, 하나의 쿠키당 4KB까지 저장된다.
쿠키 동작 방식
1) 클라이언트가 페이지를 요청
2) 서버에서 쿠키 생성
3) HTTP 헤더에 쿠키를 포함하여 응답
4) 쿠키 만료 시간까지 클라이언트가 보관
5) 같은 요청이 있을 경우에 HTTP 헤더에 쿠키를 함께 전송
세션(Session)이란?
세션은 쿠키와 비슷하지만 쿠키와 달리 세션은 서버에서 관리한다. 서버에서 클라이언트를 구분하기 위해 sessionID를 주고 사용자의 브라우저를 종료할 때까지 인증 상태를 유지한다. 쿠키와 달리 서버에서 관리하다 보니 동시접속자가 많은 경우 서버에 과부하가 생겨 성능 저하가 발생할 수 있다.
세션의 동작 방식
1) 클라이언트가 서버에 접속 시 sessionID를 발급 받음
2) 클라이언트는 세션 ID에 대해 쿠키를 사용해서 저장하고 갖고 있다.
3) 클라리언트는 서버에 요청할 때, 이 쿠키의 sessionID를 함께 서버에 전달해서 요청
4) 서버는 sessionID를 전달받은 후 세션에 있는 클라이언트 정보를 가져와서 사용
5) 클라이언트 정보를 가지고 서버 요청을 처리하여 클라이언트에게 응답
이제 문제를 해결해보자.
webhacking.kr old 01 문제 풀이
문제를 해결하기 위해 EditThisCookie를 크롬에서 다운로드하면 된다. 쿠키 값을 변경할 때 자주 사용되므로
부담 없이 사용해도 좋다.
예상했던 것처럼 user_lv이라는 쿠키가 존재하고 기본값은 1로 설정되어 있다. 이를 4보다 작고 3보다 큰 수로 설정하면 해결된다. 따라서 3.5로 쿠키를 변조했다.
필자는 글을 쓰기 전에 먼저 풀어서 aleready solved가 나오지만 여러분은 해결이 되었다는 alert 창이 나올 것이다.
이를 통해 webhacking.kr old 01을 해결하였다.
'웹해킹 > webhacking.kr' 카테고리의 다른 글
webhacking.kr old 16번 문제풀이 (0) | 2022.09.17 |
---|---|
webhacking.kr old 14번 문제 풀이 (0) | 2022.09.16 |
webhacking.kr old 13번 문제풀이(Writeup) Blind SQL Injection 고난이도 문제 (2) | 2022.09.15 |
webhacking.kr old 15번 문제 해결 (0) | 2022.09.15 |
webhacking.kr old 06번 문제풀이 (0) | 2022.09.14 |