[Webhacking.kr] 1,3,14,15,17번
1번
1번 문제는 쿠키를 조작해서 답을 구하는 문제입니다.
해당 문제를 처음 열면 아래와 같은 화면을 볼 수 있습니다.
이제 해당 문제 에 있는 view source를 확인해보면 해당문제의 답을 알아낼 수 있습니다.
<?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']}";
?>
해당 문제에서 key가 되는 부분의 소스코드인데, 여기 조건을 보면 3보다 큰수 이면서 4보다는 작아야 답을 구할 수 있습니다. 따라서 소수점 이하의 자릿수를 생각하지 않을 수 없습니다.
아래와 같이 문제를 해결할 수 있습니다.
3번
3번 문제는 개인적으로 퍼즐의 규칙을 이해하는게 조금 어려웠습니다. 이외에는 SQL Injection을 이용해서 문제를 해결할 수 있습니다.
우선 숫자의 규칙을 파악하여 아래와 같은 모양을 만들어줍니다.
그렇게 해주고 나면 입력창을 확인할 수 있습니다.
입력창 부분에서 일반적인 숫자열을 집어넣어서 어떤 결과가 되는지 확인해봅니다.
위와 같은 결과를 확인할 수 있지만 문제를 풀었다고 나오지는 않습니다. 따라서 답을 해결하기 위해 입력창에 값을 넣고 웹 프록시 도구를 이용하여 answer에 다른 값이 들어갈 수 있도록 조작합니다.
answer 부분에 항상참이 되도록 변조하여 답을 확인하면 아래와 같은 반응을 확인할 수 있습니다.
14번
이번엔 14번 문제입니다. 처음에는 입력폼이 보이고 해당 입력폼을 들어가기 위해서 SQL injection을 시도하였으나 실패하였습니다.
이후에 생각을 바꿔서 자바스크립트를 조작하여 check 조건이 항상 참이 되도록 하였습니다.
check 버튼을 눌렀을 때 ck()가 작동하는 것을 확인할 수 있었고, 이 부분을 변경하기로 하였습니다.
변경하였지만 답을 구할 수는 없었습니다.
해당 방법은 유지하되 웹 프록시 도구를 이용해서 응답을 변조하면 답을 구할 수 있다고 판단하여 웹 프록시 도구를 이용하였습니다.
이후 임의의 값을 대입하여 반응을 확인합니다.
wrong이라는 문구 대신 답으로 추정되는 숫자를 확인할 수 있습니다.
이를 대입하여 답을 확인하면 아래와 같은 응답을 확인할 수 있습니다.
15번
15번 문제의 경우 소스코드를 읽었을 때 정확히 답의 근거를 파악할 수 있으면 쉽게 해결할 수 있습니다. 다만 접속조차 안되기 때문에 이를 해결해줘야 합니다.
일반적인 접속 시도시 접근이 불가한 것을 확인할 수 있습니다.
왜 접속이 불가능한지 확인하기 위해서 웹 프록시 도구를 이용하여 응답을 살펴보기로 하였습니다.
코드를 확인해보면 접근 불가메시지 이후에 /로 연결되도록 하고 있습니다. 따라서 저 부분을 삭제하면 답을 구할 수 있겠다고 생각하였습니다.
이제 아래와 같이 변조해줍니다.
변조 이후 확인해보면 아래와 같이 누르는 링크를 확인할 수 있습니다.
해당 링크를 누르면 문제를 해결할 수 있습니다.
17번
17번 문제도 응답 조작을 통해서 해결할 수 있는 문제입니다.
위와같이 sub()를 바꿔서 문제를 해결하도록 되어있습니다. 따라서 웹 프록시 도구를 이용하여 if 조건식의 == 를 !=로 변조합니다.
이후 페이지에서 반응을 확인합니다. 이후 임의의 값을 넣고 check버튼을 누릅니다.
문제가 해결된 것을 확인할 수 있습니다.