본문 바로가기

보안공부/Webhacking.kr 풀이

webhacking.kr 1번 문제 풀이 - 쿠키는 맛있어

WEBHACKING.KR 1번 문제 풀이

[ 쿠키는 맛있어 ]


오늘은 webhacking.kr 1번 문제를 풀어보자.


1번 문제에 들어가면 다음과 같은 시커먼 화면이 반겨줄 것이다.



일단 우리는 무의식적으로 페이지 소스 보기를 누를것이다.

그러나....



하단의 index.phps 라는 문구가 링크였다는 사실만을 알 수 있다.


그럼 일단 저 index.phps 에 들어가보자.


들어가면 다음과 같은 PHP 코드가 반겨줄 것이다.



이 코드중 PHP 부분만 채취해서 알아보자.

if(!$_COOKIE[user_lv])
{
SetCookie("user_lv","1");
echo("<meta http-equiv="refresh" content="0">");
$password="????";
if(eregi("[^0-9,.]",$_COOKIE[user_lv])) $_COOKIE[user_lv]=1;
if($_COOKIE[user_lv]&gt;=6) $_COOKIE[user_lv]=1;
if($_COOKIE[user_lv]&gt;5) @solve();
echo("<br />level : $_COOKIE[user_lv]");

이 코드로 보았을때 로직은 다음과 같았다.

user_lv 쿠키가 없으면 user_lv 쿠키를 만들어주고 1을 대입해준다.
user_lv 쿠키값이 숫자가 아닌 다른 값을 포함하고 있으면 다시 값을 1로 만들어준다.
user_lv 쿠키값이 6 이상이면 쿠키값을 1로 만들어준다.
user_lv 쿠키값이 5 초과이면 인증에 성공한다.

이 떄 드는 의문점이 하나 있다.


위 내용을 수식으로 만들자면


5 < user_lv ≥ 6

이 되는데,


이는 자연수일 떄 성립하지 못한다.


따라서, 첫값이 1인 user_lv의 쿠키값을 5 초과 6 이하의 소수로 바꿔준다면,



풀이에 성공한다.



WARGAME.KR 1번 문제 클리어!