Back-end/Web hacking
웹해킹 1번문제
안녕주
2020. 9. 5. 19:08
1번문제

<1번문제 소스코드 해석>
if(!$_COOKIE[user_lv]){ // user_lv cookie값이 없다면 if문 실행
SetCookie("user_lv", "1"); //setcookie함수를 사용해 user_lv 쿠키를 1로 세팅
echo("<meta http-equiv=refresh content=0>");
}
$password="????"; //플래그 값이 저장되는 변수. 문제풀이에 상관없기 때문에 무시
if(eregi("[^0-9..]",$_COOKIE[user_lv]))
$_COOKIE[user_lv] =1; //eregi함수를 이용하여 user_lv cookie 값이 0~9의 정수중 하나로 시작한다면 if문 실행, cookie값이 1로 세팅
if($_COOKIE[user_lv] >=6)
$_COOKIE[user_lv] =1; //user_lv cookie 값이 6보다 크거나 같으면 if문이 수행되고 cookie 값이 1로 세팅
if($_COOKIE[user_lv] >5) //user_lv cookie 값이 5보다 크면 문제가 풀린다.
@solve();
echo("<br>level : $_COOKIE[user_lv]"); //user_lv 쿠키값 출력
<1번문제 풀이>
user_lv 쿠키의 값이 5보다크면 문제가 풀리는데 eregi함수 때문에 0~9의 숫자를 사용하면 강제로 user_lv의 값이1로 세팅된다. 또한 쿠키값이 6과 같거나 크면 1로 세팅된다. 따라서 해당 if문에 해당하지 않는 5보다 크고 6보다 크거나 같지 않은 실수를 넣으면 된다.
