가장 먼저 필터링 확인하기
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 |