view-source를 누르면 소스코드를 볼 수 있다.
php 소스 부분만 따로 보면
preg_match($pattern, $subject [,$matches]);
: 문자열에서 정규 표현식과 일치하는 패턴을 검색하고 $matches에 검색 결과가 반환된다.
정규표현식
https://flash-ctf.tistory.com/43
[php] preg_match 함수
안녕하세요! 오늘은 php 함수중에 preg_match 함수에 대해서 설명할게요! 웹해킹 문제들을 풀다보면 php 코드에서 자주 등장하는 함수입니다! 먼저 어떻게 쓰이는지 알아보겠습니다 <예시>
flash-ctf.tistory.com
//사이에 있는 정규표현식대로 필터링한다. i는 대소문자를 구별하지 않는다는 뜻
\는 특수기호를 뜻하니까
앞에서부터 순서대로 띄어쓰기, /, (, ), |, &, select, from , 16진수를 필터링하고있다.
sql을 돌려서 id=admin인 레코드를 출력해야 solve
주어진 sql문은
select id from chall18 where id='guest' and no=$_GET[no]
빨강으로 표시한 부분에 들어갈 값을 잘 입력해서 원하는 결과를 만들어야한다.
힌트로 admin의 no 값이 2라고 나와있어서 내가 생각한 sql 문은
select id from chall18 where id = 'guest and no=0 or no = 2
여기서 띄어쓰기를 입력하면 필터링에 걸리기 때문에
띄어쓰기를 우회하는 방법을 찾아보았다.
짠
https://binaryu.tistory.com/31
0%09or%09no=2 라고 입력하면 된다.
그런데 이렇게 입력창에 입력하고 제출을 누르고 url을 확인해보면
%, =가 url 인코딩되어 출력되고 있다.
분명히 맞게 쿼리를 짰는데 왜 안돌아가나 싶어서 엄청 오래 뻘짓을 했다.
get방식으로 보내기때문에 바로 url에 0%09or%09no=2를 입력하면 solve
[출처, 참고]
http://tcpschool.com/php/php_regularExpression_concept
'Webhacking.kr' 카테고리의 다른 글
Challenge(old)_24 (0) | 2020.05.19 |
---|---|
Challenge(old)_19 (0) | 2020.05.19 |
Challenge(old)_17 (0) | 2020.05.19 |
Challenge(old)_16 (0) | 2020.05.19 |
Challenge(old)_15 (0) | 2020.05.18 |
댓글