cgy12306

[Webhacking.kr] old-26 본문

Wargame/Webhacking.kr

[Webhacking.kr] old-26

cgy12306 2019. 9. 25. 15:20


view-source만 달랑하나 있다. 눌러서 소스를 확인해 보자.


GET['id']로  넘겨받은 값이 admin이면 preg_match함수로 필터링 한다. 그리고 id 값을 url디코딩해주고, 해당 값이 admin이면 문제가 풀린다.

admin을 url 인코딩을 해주게 되면 %61%64%6d%69%6e이라는 값이 나온다. 하지만 php로 값을 넘겨 받을 때 디코딩해서 넘겨 받기 떄문에 admin으로 값을 받아와서 preg_match 함수에서 걸리게 된다.

url 입력 =======> ?  ========> admin
            (디코딩)            (디코딩)


생각을 해보면 url을 브라우저로 넘기면 url인코딩을 하고, 서버로 디코딩해서 넘겨줄 때 %를 인코딩해서 보내준다면, 서버로 %가 %25로 변경해줬기 때문에 %25를 %로 디코딩 할 것이고, php에서는 id 값을 admin으로 받지 않고 %61%64%6d%69%6e로 받을것이다. 그러면 다시 urldecode 함수로 디코딩해서 admin 값을 얻어낼 것이다. 즉, admin을 url인코딩 두번해주면 될것이다.


https://webhacking.kr/challenge/web-11/?id=%2561%2564%256d%2569%256e

  • pwnwiz님께서 url인코딩과 디코딩을 브라우저 내부에서 해서 서버로 보내주는 프로토콜이 있다고 한다.


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

[Webhacking.kr] old-54  (0) 2019.10.02
[Webhacking.kr] old-19  (0) 2019.10.02
[Webhacking.kr] old-18  (0) 2019.09.25
[Webhacking.kr] old-17  (0) 2019.09.25
[Webhacking.kr] old-16  (0) 2019.09.25
Comments