CTF/웹해킹

[Affinity CTF] Path of Double-Dipping - 웹해킹 / Double Encoding

SecurityMan 2022. 12. 29. 11:00

 

조금만 생각해보면 아주 쉬운 웹해킹 문제

 

Write up을 쓰려고 보니 캡쳐가 조금 미흡했다..

 

반응형

 

 

이번 문제도 별다른 설명이나 파일 없이

 

문제 페이지 주소만 주어진다.

 

문제 페이지에 접속하면 위와 같은 화면이 나오는데

 

중간에 challenge description: here/is/the_flag 라고

 

서버에서 플래그가 있는 위치를 알려주고 있다.

 

이 부분을 캡쳐를 못했는데,

 

URL에 http://web3.affinityctf.com/here/is/the_flag 라고입력하면

 

접속이 불가능하다고 나온다.

 

동작하는것을 보니 here/is/the_flag 에 있는 문자중 어떤것이 필터링이 걸려있는 느낌이었다.

 

이 필터링을 어떻게 우회하느냐가 관건이었는데

 

문제 제목에서 사실 힌트를 다 주고 있었다.

 

Double Dipping 은 아마도 URL Double Encoding 을 암시하는 문구가 아닐까 생각했고

 

 

온라인 URL 인코딩/디코딩 도구(https://seb.kr/url/)에서

 

' / ' 문자를 더블 인코딩을 해봤다.

 

 

원리를 대략 설명하면

 

' / '는 ASCII 코드표에서 0x2F 로 표현할 수 있다.

 

URL에서는 %를 붙혀 %2F 로 쓴다.

 

here/is/the_flag 에서 / 부분을 %2F로 바꾸면

 

here%2Fis%2Fthe_flag 같은 형태가 된다.

 

더블 인코딩이니 한번 더 인코딩을 해줘야하는데

 

 

다음에 인코딩할 문자는 % 이다.

 

%는 0x25로, URL에서는 %25 로 나타낼 수 있다.

 

here%2Fis%2Fthe_flag 에서 %를 %25로 바꾸면

 

here%252Fis%252Fthe_flag 이런 형태가 된다.

 

URL 창에 here%252Fis%252Fthe_flag 라고 입력하면

 

한번 디코딩 되면서 here%2Fis%2Fthe_flag 가 되고,

 

다시한번 디코딩 되면서 here/is/the_flag 가 되는 원리이다.

 

 

URL에 더블인코딩된 경로를 추가해주면

 

필터링을 우회해서 플래그를 찾을 수 있다.

반응형