가장 먼저 필터링 확인하기

1) id 파라미터 : _ . ' 

2) pw 파라미터 : _ . ' 

분명 싱글쿼터가 모두 필터링되는데, 이 문제를 해결하려면 id 값이 있어야 한다.

pw는 모르니 pw 파라미터를 무력화시키면서 id 파라미터에는 입력값이 들어가야 문제를 풀 수 있다.

하지만 이를 무력화하려면 id에 들어가는 싱글쿼터 필터링을 무력화하라는 말인데... 싱글쿼터 필터링 우회 기법을 알아야 한다.

몇 개 찾아보니 다음과 같다.

 " " 더블쿼터 사용
\ 백 슬래쉬 사용 

일단 더블쿼터로는 불가능했다. id = ' '  두번째 오는 싱글쿼터를 무력화할 수 없기 때문이다.

그럼 백슬래쉬를 사용해야 하는데, 여기서 백슬래쉬의 역할을 알고 가야 한다.

\ : 뒤에 오는 ' 가 문자열로 인식됨

단, 이 방법은 id와 pw 두 개의 파라미터가 존재할 때만 가능한 방법이다!!!!

id = 'test' and pw= 'test' 라고 할 때..

id= ' test\' and pw= ' test' 여기서 두번째 싱글쿼터가 문자열이 되고 세번째 싱글쿼터가 두번째가 되어버린다.

마지막 싱글쿼터는 짝이 맞지 않은 것..

그래서 마지막 싱글쿼터만 주석처리로 무력화하면 된다. 

 

payload : id = \ & pw=or 1=1 %23

id = ' [\' and pw=] ' or 1=1 #'

: 문자열 [ \' and pw= ]을 true로 만들어야 하니 뒤에 or 1=1을 붙여주고 주석처리(#)로 세번째 싱글쿼터를 무력화하는 것

 

 

solve!!!!!

'WEB > Lord of SQLinjection' 카테고리의 다른 글

[LOS] step18. nightmare 풀이  (0) 2023.06.14
[LOS] step17. zombie_assassin 풀이  (0) 2023.06.14
[LOS] step15. assassin 풀이  (0) 2023.06.14
[LOS] step14. giant 풀이  (0) 2023.06.13
[LOS] step13. BUGBEAR 풀이  (0) 2023.06.13

+ Recent posts