profile image

L o a d i n g . . .

article thumbnail image
Published 2021. 5. 17. 22:27

더블 인코딩 문제

문제 접속 창

 

source code

GET 방식으로 id 파라미터 값을 받아서 urldecoding 한 후의 값이 "admin"이여야 하고, admin 을 그대로 입력할 시 필터링이 된다.

 

urlencoding 표를 참고해서 admin 을 인코딩 시켰다.

 

admin 을 디코딩 한 값(아래) 를 URL에 파라미터 값으로 넣어준다.

%61%64%6d%69%6e

 

그런데 주소창에 값이 admin 으로 바뀌고, no가 출력된다.

코드를 보면 preg_match 함수가 urldecode 앞쪽에 있어 영향을 받을 일이 없어보이는데 위와 같은 결과가 나타났다. 그렇다면 아마도 urldecode가 되기 이전에 자동적으로 디코딩이 되었기 때문에 preg_match가 동작한 것을 보인다.

 

웹 서버와 브라우저 사이에서 데이터 교환 시 브라우저는 폼에서 입력받은 데이터를 자동으로 인코딩한 값을 PHP서버로 보내고 PHP는 받은 인코딩된 값을 자동으로 디코딩한다.

위와 같은 이유일 것 같다. 이 값을 서버에서 한번 더 디코딩하고 필터링하는 과정을 거치므로 이 값을 한번 더 인코딩(더블 인코딩) 해주어야 우회할 수 있다.

 

 

admin을 더블 인코딩하면 다음과 같다. (다음 사이트를 통해)

http://www.convertstring.com/ko/EncodeDecode/UrlEncode

 

URL 인코딩 - 온라인 URL 인코더

 

www.convertstring.com

 

%2561%2564%256d%2569%256e

더블 인코딩한 admin 값을 id 파라미터로 전달한다.

 

 

성공!

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

[Webhacking.kr] 28번  (0) 2021.05.18
[Webhacking.kr] 27번  (0) 2021.05.17
[Webhacking.kr] 25번  (0) 2021.05.17
[Webhacking.kr] 24번  (0) 2021.05.17
[Webhacking.kr] 23번  (0) 2021.05.17
복사했습니다!