힌트1.  no에는 싱글쿼터를 필터링 한다. 근데 솔직히 필터링 하던말던 상관없다.

힌트2.  이 문제의 테이블을 만들어 보자.

힌트3. guest의 no 값은 1이다. 그럼 admin의 no 값은?

풀이
이 문제는 이 문제의 테이블이 어떻게 생겼는지만 잘 파악하면 풀 수 있을 것이다.
일단 최종 목표는 admin으로 로그인 하는 것이다.
no=1 일때 guest로 로그인이 된다는 것은 알 수 있다.
no=2 일때 로그인이 되지 않는다. 여기서 추측 할 수 있는것은 다음과 같다.
(Table 만들기 귀찮아서 걍 이렇게 했다.)
+——————-+
|     id     |     no   |
+——————–+
|  guest  |     1      |
|  ????   |    ??     |
+——————–+

일단 table안에는 하나 이상의 값은 들어 있다는게 확실하다.
no=2라는 id는 어떤값이 들어 있는지는 모르니 no에 쿼리를 입력해보자
싱글쿼를 막고 있으므로 약간 생각을 달리 해야한다. 나는 이렇게 했다.

?no=999 or no=2

쿼리를 설명하자면
where id=’guest’ and no=999 or no=2
id가 guest이고 no가 999인 값은 없으므로 false인데, or no=2 라고 했으므로 쿼리를 간단하게 정리하면
where no=2
이렇게 no가 2인 값을 찾게되는 마법을 부릴수 있다.

'CTF > LOS' 카테고리의 다른 글

[LOS] – darkelf 힌트 및 풀이  (0) 2019.04.06
[LOS] – wolfman 힌트 및 풀이  (0) 2019.04.06
[LOS] – orc 힌트 및 풀이  (0) 2019.04.06
[LOS] – goblin 힌트 및 풀이  (0) 2019.04.06
[LOS] – cobolt 힌트 및 풀이  (0) 2019.04.06
[LOS] – gremlin 힌트 및 풀이  (0) 2019.04.06