쉽고 깔끔하게

[LOS ; Lord of SQL Injection] 16번 succubus 문제풀이 본문

WebHacking/LOS

[LOS ; Lord of SQL Injection] 16번 succubus 문제풀이

찐무 2022. 4. 1. 15:06
728x90
반응형


문제

https://los.rubiya.kr/chall/succubus_37568a99f12e6bd2f097e8038f74d768.php


풀이

  • preg_match($pattern, $subject, [, $matches]) : 문자열 안에서 특정한 정규식 패턴의 존재 여부를 찾는데 유용한 함수

- $pattern : 문자열로 검색할 패턴

- $subject : 입력 문자열

- [$matches] : 사용 시 패턴에 매치되는 내용을 배열에 담아둠

 

따라서 얻을 수 있는 정보로는 id와 pw의 입력 값 필터링 규칙으로 다음과 같은 정보를 필터링한다는 것이다.

1) prob

2) _

3) .

4) ( )

5) '

 

여기서 가장 중요한 점은 ' 을 필터링 한다는 점이다. 따라서 preg_match의 필터링을 피하기 위해서  \ 를 이용하고자 한다.

\ 를 사용하게 되면 이스케이프 처리가 되고, 이는 쿼리문에 영향을 미치지 않는 일반 문자열이 된다.

 

따라서 id=\ 를 입력하게 되면 쿼리문이 SELECT id FROM prob_succubus WHERE id='\' and pw='' 이 되면서 노란색으로 표시된 부분이 문자열로 인식된다.

 

결과적으로 id=\&&pw=or 1=1%23를 입력하면 문제를 해결할 수 있다.

 

728x90
반응형