NULL 잡아먹는 놈

[webhacking.kr] 27번 문제 풀이 본문

0x0070 워게임 문제 풀이/0x0071 webhacking.kr 풀이

[webhacking.kr] 27번 문제 풀이

34t3rNULL 2018. 3. 27. 21:18

Prob27

문제 의도 : SQL injection, php 연산자 우선 순위, 필터링 우회

SQL injection 문제이다. 해결해야할 것은 다음과 같았다.

  1. no 인자의 유무
  2. 필터링 우회

일단 필터링은 가장 기초적인 것이 걸려있는데 슬프게도 (는 막혀있다. 그래도 )는 쓸 수 있으니 --주석으로 뒤의 )를 없애주면 된다. 그냥 id를 admin 만들면 되겠다. and는 or 보다 연산자 우선 순위가 높으므로 no를 거짓으로 만들어 주어 id=guest의 쿼리를 무시시켜주고 id=admin를 가져오는 쿼리를 만들어 주면 된다.

첫 번째로 생각한 쿼리는 "-1) or id LIKE 'admin'--+" 이다.

일단 되지는 않는 것 같다. 이러면 쿼리 오류인데 어떤 부분이 잘못되었나 생각해보았다. 먼저 magic_gpc_quotes 때문인 것 같아서 '나 "를 안 쓰고 할 수 있는 방법을 생각해보았다. 그랬더니 괜히 id를 쓰는 것 보다는 no를 통해서 하는 방법이 쉬워보였다.

일단 guest의 no 값은 1이었다.

그러면 admin은 1이 아닌 값으로 가정했고, 1 초과하는 값을 갖을 것 같아서 "-1) or no > 1--+"이라는 쿼리로 공격을 해보았다.