먼저, 로그인 페이지에서 webhacking.kr 계정으로 로그인 해 보았지만 실패. Join 버튼은 "Access_Denied" 라는 메세지만 뜬다. 요소 검사를 해보면 "Join" 버튼을 눌렀을 때 단순히 메세지 박스만 뜨도록 해 놓았다. 로그인 페이지가 http://webhacking.kr/challenge/web/web-05/mem/login.php 이니까, 게싱으로 가입 페이지는 http://webhacking.kr/challenge/web/web-05/mem/join.php 라고 생각해볼 수 있겠다. (존재하지 않는 페이지일 경우 404 에러 메세지가 나오므로, 숨겨진 페이지를 찾았다고 볼 수 있음) 들어가면 텅텅 빈 페이지가 나오는데, 한번 더 요소 검사를 해보자. 분석하기 어렵도록 난독화된..
먼저 점수가 높지 않은 문제라 SQL Injection 같이 어려운 문제는 아닐 꺼라고 생각했다. 힌트로 주어진 문자열 뒤가 "==" 식으로 끝나는데, 웹 쪽을 좀 해본 사람은 base64 인코딩이라고 직감할 수 있을거다. base64란?https://ko.wikipedia.org/wiki/%EB%B2%A0%EC%9D%B4%EC%8A%A464 쉽게 말하면 바이너리 데이터를 일정한 규칙을 이용해서 ASCII로만 이루어진 문자열로 변환하는거다.메모장으로 exe파일을 열면 이상한 글자로 깨져버리는걸 base64로 인코딩해서 안전하게 전송, 저장할 수 있도록 하는 거라고 생각하면 될듯 하다. 도구 : https://ostermiller.org/calc/encode.html 풀면 "c4033bff94b567a19..
페이지의 소스를 확인해보자. --------------------- ----- index.phps ----- 쿠키 데이터를 이리저리 비교하는 걸로 보아 쿠키 값 변조 문제인 것 같다. 2번째 줄에서 클라이언트의 user_lv 쿠키가 없을 경우, 값을 1로 해 새로 만들어준다.21번째 줄에서는 user_lv 쿠키 값을 정규식으로 체크해 1~9까지의 값이 아니면 1값을 만들어주고 있다.eregi 함수 >> http://php.net/manual/en/function.eregi.php 23번째 줄 부터user_lv 쿠키값이 5 초과이거나, 6미만인 경우에만 문제를 풀이한 것으로 처리하고 있다.(23번째에서 5보다 작거나 같을 경우, 25번째에서 6이상일 경우 쿠키값을 1로 초기화한다) 쿠키 값을 조작하는것이 ..