쉽고 깔끔하게

[LOS ; Lord of SQL Injection] 3번 goblin 문제풀이 본문

WebHacking/LOS

[LOS ; Lord of SQL Injection] 3번 goblin 문제풀이

찐무 2022. 3. 11. 17:23
728x90
반응형


문제

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


풀이

  • 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

 

▶︎ no=0||id=0x61646d696e

728x90
반응형