webhacking.kr 1번 풀이
webhacking.kr 의 첫 번째 문제이다.
[HINT]
1. 정규표현식
문제의 화면을 보면 검은 화면에 level 그리고 index.phps라는 문자열을 볼 수 있다.
webhacking.kr 에서 자주 보게 될 phps 는 PHP Source를 뜻하는 것이며, 이 확장자 명은 설정을 통해 변경 할 수 있다.
단지 PHP 소스를 보기 위해 만든 형식이므로
문제나 예제 같은 곳에서 소스를 출력하기 위해는 유용하게 쓰일 수 있지만
함수가 사람들에게 보이면 안되는 보안이 필요한 페이지는 PHP Source 기능을 잘 쓰지 않는다.
하여튼, 이 문제에 대해 힌트를 얻기 위해 index.phps로 이동하게 되면
다음과 같은 소스를 볼 수 있다.
1번 문제는 PHP 함수와 정규표현식에 대한 기본 이해를 하고 있다면 쿠키 변조를 통해 쉽게 풀수 있는 문제이다
먼저 if(!$_COOKIE[user_lv]) 와 SetCookie("user_lv","1"); 는
user_lv이라는 이름의 쿠키가 존재하지 않으면 1이라는 값을 가진 user_lv 쿠키를 생성한다는 의미이다.
쿠키는 개발자 도구(F12) > Resource > Cookies 나 쿠키 변조 툴 쿡시툴바, EditThisCookie 등으로 볼 수 있다.
단, 답을 적기 위해선 쿠키 변조 툴이 필요하므로 개발자 도구보다는 원하는 쿠키 변조 툴을 받아서 보자
그리고 두 번째 if 문인 if(eregi("[^0-9,.]",$_COOKIE[user_lv])) $_COOKIE[user_lv]=1;은 쿠키의 값이 user_lv 이 대괄호 안에 있는 0~9와 . 이 존재 하지 않으면 user_lv의 값을 1로 간주 한다.
세 번째와 네 번째 if문인 if($_COOKIE[user_lv]>=6) $_COOKIE[user_lv]=1;와 if($_COOKIE[user_lv]>5) @solve();는 user_lv이 6보다 크거나 같으면 1로 간주하고, 5보다 크면 문제가 풀린다.
즉 , 5<x<6인 모든 실수면 통과된다.
'wargame > webhacking.kr' 카테고리의 다른 글
webhacking.kr 17번 풀이 (1) | 2018.08.08 |
---|---|
webhacking.kr 4번 풀이 (0) | 2018.08.08 |
webhacking.kr 14번 풀이 (1) | 2015.08.14 |
webhacking.kr 6번 풀이 (1) | 2015.08.13 |
webhacking.kr 15번 풀이 (0) | 2015.08.13 |