Challenge(old)_26
view-source를 누르면 php 소스를 볼 수 있다.
preg_match는 이전 18번 문제에서 본 적 있는 함수!
https://loggingmini.tistory.com/22
Challenge(old)_18
view-source를 누르면 소스코드를 볼 수 있다. php 소스 부분만 따로 보면 preg_match($pattern, $subject [,$matches]); : 문자열에서 정규 표현식과 일치하는 패턴을 검색하고 $matches에 검색 결과가 반환된..
loggingmini.tistory.com
solve 조건을 보면 GET 방식으로 id 값을 받아오는데
preg_match로 admin을 필터링하고
urldecode를 한 다음의 값이 admin이면 solve...
그러면 단순하게 admin을 url 인코딩한 값을 넣으면 되는 거 아닌가 라고 생각을 했는데
url 인코딩(퍼센트 인코딩)은 영어에 대해서는 변화가 없었다..
뭘까 대체...
모든 문자열을 인코딩하는 Force Full URL Encoding을 하면 인코딩을 할 수 있다.
사실 머 특별한게 아니라 그냥 hex값으로 인코딩해주는 거다.
%61%64%6d%69%6e를 입력하면..?
admin으로 그대로 입력된다.
입력값이 자동으로 디코딩되는 모양이다. -> 구글링해보니까
그래서 한번 더 인코딩해줬다.
%61%64%6d%69%6e 여기서 %를 %25로만 바꿔주면 된다.
%2561%2564%256d%2569%256e
+) 풀이가 마음에 안들어서 추가로 찾아봤는데 admin과 admin을 퍼센트 인코딩한 값인 %61%64%6d%69%6e은 둘 다 같은 값으로 인식한다.
그래서 %61%64%6d%69%6e를 입력하면 admin을 입력한 것과 다를 게 없다.
admin을 입력하면 preg_match에 걸려서 오류 메세지가 뜨고
admin을 머 다르게 인코딩해서 전송한다고 해도 urldecode 과정을 거치기 때문에 정답이 될 수가 없다.
따라서 %61%64%6d%69%6e를 한번 더 인코딩 해주는 것이 내가 하려던 답이다.
위에 적은 풀이랑 크게 다르지 않은 말이긴 한데 이해 방식이 약간 다르다.
끗