반응형

웹 개발을 지속적으로 공부를 하면서 웹보안에도 신경을 써야한다는걸 뒤늦게 알아서

 

webhacking 으로 웹보안 공부를 하기로 했다.

 


1번

메인화면

<?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>

위코드는  메인화면에 view-source링크를 클릭하면 볼 수 있는 코드다.

 

php언어에 대해서 잘 몰랐기에 천천히 코드를 분석하면서 문제를 풀었다.

 

첫번째 php는

만약 view-source가 1이면 view_source를 실행시키고

만약 COOKIE가 없다면(?) user_lv을 설정하는데 값은 1로 한다.

 

두번째 php는

만약 user_lv이 숫자가 아니면 user_lv을 1로 설정

만약 user_lv이 4이상이면 user_lv을 1로 설정

만약 user_lv이 3이상이면 user_lv을 1로 설정

 

여기서 주목해야되는 점은 user_lv이다.

 

코드를 분석하면서 user_lv이 1로 안만들면 문제를 풀 수 있을 것 같았다.

 

3 < user_lv <= 4 인 것이다.

 

그래서 4를 넣어봤지만 되지 않아서 3.5를 넣었더니 문제가 풀렸다.

 


코드를 수정해야되는줄 알았지만 chrome에 cookie 값을 설정할 수 가 있다!

 

chrome 개발자도구를 키고 Application에 Cookies를 들어가면 

name이 user_lv이 있는데 Value를 3.5로 만들었다.

Enter를 하고 페이지에서 새로고침을 하면!

 


완료!

 


문제를 푸느라 되게 이것저것 만져봤지만 잘 안됬다.

3시간동안 문제를 푸느라 힘들었지만 그래도 문제를 풀어서 

좋았다.

반응형

+ Recent posts