이번 문제는 이름이 늑대인간이다..
문제 형태를 보니 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 |
'워게임,CTF > lord of sql injection' 카테고리의 다른 글
[워게임] lord of sql injection 8번,9번 - troll, vampire (0) | 2024.03.28 |
---|---|
[ lord of sql injection ] darkelf write up (0) | 2024.02.15 |
[ lord of sql injection ] hell_fire, evil_wizard writeup (0) | 2023.10.16 |
[ lord of sql injection ] hell_fire writeup (0) | 2023.10.14 |
[lord of sql injection] dark_eyes writeup (0) | 2023.10.13 |