문제
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 값이 나왔다.
'Wargame & CTF > webhacking.kr' 카테고리의 다른 글
[webhacking.kr] old-18 문제 풀이 (0) | 2020.09.20 |
---|---|
[webhacking.kr] old-15 문제 풀이 (0) | 2020.09.20 |
[webhacking.kr] old-17 문제 풀이 (2) | 2020.09.04 |
[webhacking.kr] old-14 문제 풀이 (2) | 2020.09.04 |
[webhacking.kr] old-6 문제 풀이 (0) | 2020.09.04 |