Security/Web

[Webhacking.kr] Challenge(old)- old-01

bonggang 2020. 5. 31. 00:45

문제


 

https://webhacking.kr/challenge/web-01/

 

Challenge 1

 

webhacking.kr

 

문제 풀이


0. 소스 코드 확인

<?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']>=6) $_COOKIE['user_lv']=1;
  if($_COOKIE['user_lv']>5) solve(1);
  echo "<br>level : {$_COOKIE['user_lv']}";
?>
<br>
<a href=./?view-source=1>view-source</a>
</body>
</html>

 

이 문제는 php를 아는 사람이라면 쉽게 풀 수 있는 문제다.

solve() 함수를 위해서는 if($_COOKIE['user_lv']>5)를 만족해야 한다.

즉, COOKIE['user_lv']가 5보다 크면 문제를 해결할 수 있다.

 

하지만 여기서 또 봐야하는 것은 바로 위의 문장이다.

if($_COOKIE['user_lv'] >= 6) $_COOKIE['user_lv']=1;

COOKIE['user_lv']가 6 이상의 값일 경우 1로 지정해준다.

 

정리하면 COOKIE['user_lv']의 값을 5보다 크지만 6보다 작은 값으로 변조해주면 될 것 같다.

 

1. 쿠키 값 변조

https://chrome.google.com/webstore/detail/editthiscookie/fngmhnnpilhplaeedifhccceomclgfbg?hl=ko

 

EditThisCookie

EditThisCookie는 쿠키 관리자입니다. 이것을 이용하여 쿠키를 추가하고, 삭제하고, 편집하고, 찾고, 보호하거나 막을 수 있습니다!

chrome.google.com

다들 많이 사용하는 프로그램을 통해 쿠키 값을 변조해보겠다.

 

위 프로그램을 설치해주면

 

이렇게 주소창 옆에 쿠키 모양 아이콘을 확인할 수 있게된다.

 

프로그램을 통해 쿠키 값을 변조해줬다.

 

이후 새로고침을 해주면 성공이다~