webhacking.kr 26번

Sirius·2023년 3월 20일

소스를 살펴보자

1. preg_match

preg_match 함수는 (/대조할 문자/, 입력한 문자)에서 입력한 문자에 대조할 문자가 있으면 1을 반환한다.
만약에 특수문자를 필터링 하고 싶은 경우 앞에 \를 붙인다.
ex>(/\'/, 입력한 문자)

2. URL 인코딩과 디코딩의 개념

브라우저 폼에서 브라우저는 php로 url을 자동으로 인코딩한 값을 전달한다.
php는 서버에서 전달받은 인코딩 값을 자동으로 디코딩한다. 즉 서버에서 자동으로 디코딩하는데 한번더 디코딩을 수행하도록 코드를 넣어준 것이다.

3. 최종정리

따라서 admin을 2번인코딩하여 url로 전달 한다면
%2561%2564%256d%2569%256e
1. 2번인코딩 된 것이 php 서버로 전달

  1. php서버에서 인코딩 된것을 디코딩한다(1번 인코딩된것으로 바뀜) preg_match함수를 돌리면 "admin"이 포함되어 있지 않아서 필터링이 우회됨

  2. 1번 인코딩된것이 urldecode함수에 들어가게 되어 "admin"으로 디코딩됨

0개의 댓글