본문 바로가기

해킹/워게임\CTF

[워게임] Lord of SQL Injection 5번 문제 - wolfman

이번 문제는 이름이 늑대인간이다..

 

 

문제 형태를 보니 php 뒤에 pw 파라미터로 쿼리를 전달해주면 되는 것 같다.

 

이 문제의 제한 조건을 보니 preg_match 함수로 prob과 _ , . , \ 과 같은 특수문자 및 문자열을 막아놨다.

공백도 쓰면 안된다고 한다.

 

 

공백을 그냥 주지 않고 %09를 이용해 삽입했더니 공백적용이 되었다. 공백 필터링을 이걸로 우회하면 될 것 같다

 

그 후, or 를 이용해 1=1를 주고 뒤는 주석처리를 해줬더니 조건문이 참이 되어 guest가 출력된 것을 알 수 있다.

그런데 mysql은 and가 or 보다 연산 순위가 높아 id='guest'와 pw='test'가 먼저 처리된 후, 1=1이 처리되었을 것이다.

그럼 사실상 앞의 id='guest'는 없어진 것이나 다름없으므로 새로 id 파라미터를 admin값을 줄 수 있겠다는 생각이 들었다.

 

그래서 1=1 를 지우고 id='admin 을 대입했더니 클리어

 

 

 

찾아보니 빈칸 필터링을 우회할 수 있는 여러가지 방법이 있다고 한다.

%09는 tab을 인코딩한 것이고 그 외에도 4가지가 더 있었다.

tab은 커서를 한 글자 앞으로 보내는 뜻이라고 한다.

문자 16진수(Hex)
tab %09
line feed %0a
vertical tab %0b
form feed %0c
carriage return %0d