2018. 2. 21. 16:06

## prob26(web, 100pt)


[Main]

 26번 문제는 url encoding에 관한 문제였습니다. 우선 문제 페이지에 들어가면 index.phps라는 링크를 주어 php소스를 제공하고 있습니다. 문제 소스코드는 아래 [그림 1]과 같습니다.


[그림 1] index.phps


 우선 소스코드를 분석해보면 정말 간단합니다. GET방식으로 id라는 파라미터에 값을 받고, eregi()함수로 "admin"이라는 문자열이 포함되면 "<p>no!"라는 문자열을 출력하고 종료합니다. 하지만 아래 if문을 보면 $_GET[id]가 admin이어야 문제가 풀리게 되는데, urldecode()함수를 거친 값이 "admin"값이 되면 됩니다. 따라서 "admin"이라는 값을 보내는 것이 아니라 "%61%64%6d%69%6e"라는 값을 보내야 합니다. 하지만, 브라우저의 주소창에서 "%"와 같은 예약어를 자동으로 해석해서 decode를 시켜주기 때문에 결국 "admin"이라는 값이 서버에 전송됩니다. 따라서 "%"도 url encode하여 서버에 보내야 최종적으로 서버에 "%61%64%6d%69%6e"라는 문자열이 전송되고, 이게 urldecode()함수를 통해 "admin"으로 변환되게 될 것입니다. 따라서 "%2561%2564%256d%2569%256e"이렇게 보내면 아래 [그림 2]와 같이 문제가 풀리게 됩니다.


[그림 2] Congratulations~!


참고로 url encoding에 관한 글은 아래 url에서 참조할 수 있습니다.

1) http://regularmotion.kr/url-encoding-url/

2) https://bluestarblogkr.blogspot.kr/2011/10/url-encoding.html

'Wargame > webhacking.kr' 카테고리의 다른 글

[webhacking.kr] prob51(250pt)  (1) 2018.02.21
[webhacking.kr] prob45(550pt)  (0) 2018.02.21
[webhacking.kr] prob5(300pt)  (0) 2018.02.21
[webhacking.kr] prob33(200pt)  (0) 2018.02.21
[webhacking.kr] prob4(150pt)  (0) 2018.02.21
Posted by holinder4S