26번 문제 페이지를 열면 view-source 링크만 딸랑 하나 있다.
view-source 링크를 클릭해 열어보면 소스코드가 주어진다. 소스코드를 보면 solve(26); 부분이 보인다 이 말은 즉, 소스 코드를 분석해 sove(26); 부분까지 도달하게 만들면 된다.
소스 코드를 분석해보면 맨 위 php 부분은 view_source 이 페이즈를 열기 위한 부분이다. 그러므로 패스!
두 번째 php 부분을 분석하자.
여기서 첫 번째 if 문에서 preg_match 함수를 통해서 문자열을 찾는다.
preg_match 함수는 정규표현식을 통해 표현식에 해당하는 문자열들을 찾는 것이다.
첫 번째 인자로 정규표현식을 넣고, 두 번째 인자는 검사 대상 문자열 넣는다. 여기서 문자열을 찾게 되면 1을 반환하고, 찾지 못하면 0을 반환한다.
즉! 소스코드를 보면 id에서 admin 문자열을 찾는 것이다. admin 문자를 찾게 되면 1이 되므로 if 문으로 들어가 no를 출력하고 종료하게 된다.
다음 줄은 id 값을 urldecode를 이용해 디코딩을 한 후 다시 id 값에 넣는다. 그 후 다시 if 문에서 해당 값이 admin 인지 확인한다. 만약 맞다면 sovle(26) 함수를 만나 이 문제를 풀게 된다.
그렇다는 것은 admin을 인코딩한 값을 id에 넣어 보내면 알아서 디코딩을 해서 admin 이된다는 것!! 이게 문제를 푸는 답인 것 같다.
팁! urlencoding 퍼센트 인코딩은 URL에 문자를 표현하는 문자 인코딩 방법이다. 이 방법에 따르면 알파벳이나 숫자 등 몇몇 문자를 제외한 값은 옥텟 단위로 묶어서, 16진수 값으로 인코딩한다.
그림 1-3 왼쪽 부분은 admin을 url encode로 바꾼 것이고 오른쪽은 왼쪽 코드 인코딩한 값이다.
이제 인코딩한 값을 id로 보내보자!!
인코딩한 값을 보내면 문제를 해결해서 포인트를 얻는 것을 확인할 수 있다~!