Wargame & CTF/webhacking.kr

[webhackin.kr] old-26 문제 풀이

seomj 2020. 9. 5. 20:14

문제

https://webhacking.kr/challenge/web-11/

 

풀이

소스코드를 볼 수 있는 링크가 있으므로 확인해본다.

php코드를 보면 GET방식으로 받은 id 값이 'admin'이면 문제가 풀리는 것을 알 수 있다.

 

하지만 바로 'admin'값을 넣어주면 preg_match 함수로 필터링이 되어 문제가 풀리지 않는다.

 

preg_match( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] )

주어진 패턴에 있는 정규식과 일치하는 항목을 subject에서 검색한다.

 

그렇다면 'admin'을 url 인코딩을 해서 id값에 넣을 것이다.

'admin'은 %61%64%6d%69%6e 이다.

 

GET방식으로 값을 넣어주었다.

그러나 admin으로 바뀌며 no! 라는 창이 뜬다.

 

여기서 의문점이 발생하였고 알아보니

 

웹서버와 브라우저 사이에서 데이터를 교환할 때 브라우저는 폼에서 입력받은 데이터를

자동으로 인코딩한 값으로 보내고 php는 자동으로 디코딩하기 때문이라고 한다.

 

그렇다면 인코딩을 한번 더 해주어서 값을 넘겨주면 될 것이다.

 

%2561%2564%256D%2569%256E 값이 나왔다.