반응형
https://webhacking.kr/challenge/web-01/
처음에 들어가면 아래와 같이 level 1이라는 문구가 출력된다.
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문을 살펴보면 SetCookie()를 통해 쿠키값 user_lv이 1의 값을 가지며 현재 시간에 86400*30초 뒤에 만료되게 생성된다.
SetCookie() 함수에 대한 자세한 내용은 아래를 참고하자.
https://webisfree.com/2015-03-02/[php]-쿠키-설정하기-setcookie()
아래쪽의 php문에서는 문제 해결 조건이 있는데, solve() 함수가 인자 레벨에 대하여 문제를 해결했음을 나타내는 것 같다. solve 함수로 들어가는 방법은 user_lv가 3을 초과해야하는데, 숫자가 아닌 경우나 4 이상인 경우에는 user_lv가 1로 변경되어서 solve 함수로 들어갈 수 없게 된다.
해답은 매우 간단한데, user_lv가 정수라는 편견을 가지고 있어서 삽질을 좀 했었다.. 실수 범위에서 3 초과 4 미만인 수는 매우 많다. 개발자 도구에서 쿠키값을 해당하는 실수로 변경해주면 된다.
user_lv를 3.1로 바꿔 old-01 문제를 해결할 수 있었다.
반응형
'해킹 > webhacking.kr' 카테고리의 다른 글
[webhacking.kr] Challenge(Old) old-10 풀이 (0) | 2022.06.20 |
---|---|
[webhacking.kr] Challenge(Old) old-07 풀이 (0) | 2022.06.19 |
[webhacking.kr] Challenge(Old) old-06 풀이 (0) | 2022.06.18 |
[webhacking.kr] Challenge(Old) old-05 풀이 (0) | 2022.06.17 |
[webhacking.kr] Challenge(Old) old-04 풀이 (0) | 2022.06.15 |