26번 문제를 클릭하면 나오는 화면이다.
링크가 걸려있으니 클릭해보자
소스코드를 볼 수 있었다.
GET 방식으로 보낸 id가 admin이면 풀린다.
하지만 admin 검사를 진행하기 전에 id에 admin이라는 단어가 포함되어있다면 문제가 풀리지 않는다.
admin이 되야하는데 admin이 들어가면 안된다?
코드를 자세히보면 admin 포함 검사후 url디코딩을 한다.
즉, url인코딩을 통해서 admin이 아닌것처럼 데이터를 보내지만
소스에서 보듯이 url디코딩을 거쳐 admin으로 바뀌면 된다!
그러면 d를 url인코딩을 해보자
수작업으로도 아스키코드를 통해 쉽게 가능하다 (g0pher.tistory.com/211)
d는 16진수로 64이므로 %64가 된다.
즉, admin 대신 a%64min이 되는것이다.
그러나 url이 전송되면 기본적으로 디코딩이 한번 이루어진다.
URL디코딩이 이루어지는 이유는 URL에서 특별한 의미를 갖는 특수문자나
URL에서 표현할 수 없는 문자들을 전송하기 위해 URL인코딩/디코딩 을 이용한다.
지금의 경우 URL에서 특별한 의미를 같는 %라는 특수문자가 존재하기 때문에 디코딩이 이루어진것이다.
그렇기 때문에 인코딩을 한번 더해주어야한다.
%는 16진수로 25이므로 %25가된다.
즉, admin 대신 a%2564min이 되는것이다.
[ a%2564min -> a%64min -> admin ]
'Wargame > webhacking.kr' 카테고리의 다른 글
[Webhacking.kr]24번 (0) | 2017.07.19 |
---|---|
[Webhacking.kr]4번 (0) | 2017.07.19 |
[Webhacking.kr]38번 (0) | 2017.07.19 |
[Webhacking.kr]14번 (0) | 2017.07.18 |
[Webhacking.kr]39번 (5) | 2017.07.17 |