목표 : 소스코드의 적당한 이해와 쿠키 변조
필요도구
EditThisCookie (크롬 쿠키 변조 도구)
Cooxie (인터넷 익스플로러 도구)
View Source 클릭 시 나타나는 코드
<?php
include "../../config.php";
if($_GET['view-source'] == 1){ view_source(); }
if(!$_COOKIE['user_lv']){
SetCookie("user_lv","1",time()+86400*30,"/challenge/web-01/");
echo("<meta http-equiv=refresh content=0>");
}
?>
<html>
<head>
<title>Challenge 1</title>
</head>
<body bgcolor=black>
<center>
<br><br><br><br><br>
<font color=white>
---------------------<br>
<?php
if(!is_numeric($_COOKIE['user_lv'])) $_COOKIE['user_lv']=1;
if($_COOKIE['user_lv']>=4) $_COOKIE['user_lv']=1;
if($_COOKIE['user_lv']>3) solve(1);
echo "<br>level : {$_COOKIE['user_lv']}";
?>
<br>
<a href=./?view-source=1>view-source</a>
</body>
</html>
PHP
복사
주목해야할 코드
<?php
if(!is_numeric($_COOKIE['user_lv'])) $_COOKIE['user_lv']=1;
if($_COOKIE['user_lv']>=4) $_COOKIE['user_lv']=1;
if($_COOKIE['user_lv']>3) solve(1);
echo "<br>level : {$_COOKIE['user_lv']}";
?>
PHP
복사
쿠키값이 user_lv 4이상이면 user_lv 을 1로 초기화한다.
하지만 user_lv 이 3보다 크다면 solve(1) 즉 문제를 푼다.
user_lv 이 꼭 정수일 필요는 없으므로 3과 4사이의 실수값으로 쿠키값을 변조
문제는 이미 풀어서 해결 상태로 나온다.
레벨 값이 변조된 걸 확인