[Lord of SQL Injection] #3

김태현·2022년 8월 28일
0

Lord of SQL Injection

목록 보기
3/7

1. 코드

2. 풀이

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

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

  • $subject : 입력 문자열

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

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

1) prob

2) _

3) .

4) ( )

5) '

6) "

7) `

이전 문제들과는 다르게 싱글 쿼터(')와 더블 퀴터(")를 필터링하고 있어 기존의 공격은 사용할 수 없다.


또한 문제를 해결하기 위해서는 id의 값이 admin이어야 한다.

그러므로 스트링 우회를 통해 문제를 해결하고자 한다.

먼저 guest의 no 값을 알아보기 위해 숫자를 대입해본 결과, id = guest인 경우 no = 1이라는 것을 확인할 수 있었다.

이를 통해 알 수 있는 것으로는 guest의 no가 1이기 때문에 admin의 no는 1이 아닌 다른 숫자라는 것이다.

결과적으로 no=0 (guest의 no 값인 1을 제외한 다른 숫자)와 adamin의 hex(16진수) 값인 0x61646d696e을 통해 아래와 같이 쿼리문을 작성하여 문제를 해결할 수 있다.

  • no=0 or id=0x61646d696e
profile
보안을 공부중입니다

0개의 댓글