webhacking.kr - challenge 1
webhacking.kr
처음 레벨1을 선택하고 들어가면 까만 화면에 level1이라는 글만 나온다.
그래서 소스코드보기를 하니까 index.php부분이 클릭하면 다른 곳으로 이동할 수 있도록 돼있었다. 그 부분을 클릭하니 어떤 코드가 나왔다.
일단 <?와 ?>사이에 있는 코드들은 php이고 나머지는 html 이었다. 근데 html 코드보다는 php코드에 중요한 부분이 있었는데 바로 cookie였다.
webhacking.kr
처음 레벨1을 선택하고 들어가면 까만 화면에 level1이라는 글만 나온다.
그래서 소스코드보기를 하니까 index.php부분이 클릭하면 다른 곳으로 이동할 수 있도록 돼있었다. 그 부분을 클릭하니 어떤 코드가 나왔다.
일단 <?와 ?>사이에 있는 코드들은 php이고 나머지는 html 이었다. 근데 html 코드보다는 php코드에 중요한 부분이 있었는데 바로 cookie였다.
cookie
쿠키(cookie)란 하이퍼 텍스트의 기록서(HTTP)의 일종으로서 인터넷 사용자가 어떠한 웹사이트를 방문할 경우 그 사이트가 사용하고 있는 서버를통해 인터넷 사용자의 컴퓨터에 설치되는 작은 기록 정보 파일을 일컫는다. HTTP 쿠키, 웹 쿠키, 브라우저 쿠키라고도 한다. 이 기록 파일에 담긴 정보는 인터넷 사용자가 같은 웹사이트를 방문할 때마다 읽히고 수시로 새로운 정보로 바뀐다.
쿠키는 소프트웨어가 아니다. 쿠키는 컴퓨터내에서 프로그램처럼 실행될 수 없으며 바이러스를 옮길 수도, 악성코드를 설치할 수도 없다. 하지만 스파이웨어를 통해 유저의 브라우징 행동을 추적하는데에 사용될 수 있고, 누군가의 쿠키를 훔쳐서 해당 사용자의 웹 계정 접근권한을 획득할 수도 있다. (출처 - 위키백과)
쿠키와 관련된 코드를 살펴보면 다음과 같다.
<?
if(!$_COOKIE[user_lv])
{
SetCookie("user_lv", "1");
echo("<meta http-equiv=refresh content=0>");
}
?>
먼저 이 부분에서는 COOKIE의 값을 확인해서 0 이라면 1로 값을 바꿔준다.
<?
$password="????";
if(eregi("[^0-9,.]",$_COOKIE[user_lv])) $_COOKIE[user_lv]=1;
if($_COOKIE[user_lv]>=6) $_COOKIE[user_lv]=1;
if($_COOKIE[user_lv]>5) @solve();
echo("<br>level : $COOKIE[user_lv]");
?>
이 부분이 중요한데 먼저
if(eregi("[^0-9,.]",$_COOKIE[user_lv])) $_COOKIE[user_lv]=1;
는 $_COOKIE[user_lv]에서 0-9의 정수로 시작한다면 $_COOKIE[user_lv]의 값을 1로 바꾼다.
if($_COOKIE[user_lv]>=6) $_COOKIE[user_lv]=1;
에서는 $_COOKIE[user_lv]의 값이 6이상이라면 다시 $_COOKIE[user_lv]값을 1로 바꾼다.
if($_COOKIE[user_lv]>5) @solve();
이 부분이 원하는 부분인데 여기서 $_COOKIE[user_lv]의 값이 5초과의 수라면 문제를 해결 할 수 있게 된다.
따라서 $_COOKIE[user_lv]의 값이 6보다는 작고 5보다는 큰 수여야하기 때문에 5.x정도의 수를 넣어주면 된다. 이 쿠키를 바꾸는 방법은 구글 스토어에서 editthiscookie라는 확장 프로그램을 설치해서 쿠키의 값을 수정했다.
성공!
참고:
댓글
댓글 쓰기