보안 전공생의 공부

Lord of SQL Injection#5 wolfman | White Space filtering 본문

Wargame/web

Lord of SQL Injection#5 wolfman | White Space filtering

수잉 2021. 1. 15. 11:06

preg_match라는 함수가 낯설다.

preg_match('/대조할 문자/', '입력한 문자', $matches); 구조이며

- 대조할 문자 : 찾거나 필터링하고 싶은 문자열 ( 특수문자일때는 앞에 \ 붙이기)

- 입력한 문자 : 사용자가 어떤방식이든 입력 받아 담은 특정 변수

- $matches : 대조할 문자 == 입력한 문자 일때 그 문자는 배열형태로 $matches에 저장

( 출처 : https://flash-ctf.tistory.com/43 )

이를 활용해 해석해보면

pw에 공백이 존재하면 안된다.

(이때 / 뒤에 붙은 i는 대소문자를 구분하지 않는다는 의미이다.)

그리고 마지막에 있는 if문을 보면

pw와 무관하게 id가 admin 일 때 문제가 풀리는 것을 확인 할 수 있다.

id가 admin이기만 하면 되는 거니까 따로 pw파라미터를 구할 필요는 없다.

그런데 내가 입력을 하는 값은 pw의 값이므로 공백이 들어가면 안되는 것을 주의해야 한다 !

주소 뒤에 입력을 할 때

?pw=' or id='admin 이나?pw='||id='admin 을 입력하게 될텐데

첫번째처럼 or 을 쓰는 경우는 or 양쪽에 공백인 %20 가 들어가야하고,

이에 따라 No whitespace ~_~ 문구가 출력된다.

%20을 %0a, %0b, %0c, %0d, %09로 변경해 우회시켜주면된다.

%20을 %0a로 변경시켜주었다.

두번째처럼 || 을 쓰는 경우는 공백이 필요하지 않으니 바로 성공한다.

Comments