필터링 조건 찾기

1) id와 pw 파라미터에 들어오는 문자열을 모두 뒤집는 strrev 함수가 쓰인다.

2) id와 pw 파라미터에 _ . '  모두 필터링

3) id와 pw 파라미터에 ' , " , \  입력시 앞에 \ 하나씩 추가됨.

' → '\

" → "\

\→\\

 

이번 문제는 3번을 역이용해야 하는 것으로 보인다. 

step16번 문제에서 싱글쿼터 필터링을 우회하기 위해 백슬래쉬 (\) 를 이용하여 문자열로 만들었다. 이 점을 이용해야 한다.

백 슬래쉬를 이용하려면.. 

where id = ' test' and pw = ' test' 에서 id의 첫 싱글쿼터와 pw의 첫 싱글쿼터가 한 쌍이 되도록 만들어야 한다.

 

1차시도)

첫 시도는 다음과 같다. 앞선 문제와 동일하게 id= \ 먼저 넣고, pw에는 무력화할 or 1=1 # 넣기

payload : id = \ & pw= # 1=1 ro (strrev 함수 때문에 뒤집어서 입력값 넣기)

이 시도로 where절을 분석해보면..

where id=' \\' and pw= ' or 1=1 #'

: id의 1번 싱글쿼터와 pw의 1번 싱글쿼터만 쌍을 이뤄야 하는데 id의 2번 싱글쿼터가 먹혀서 실패

라고 생각했지만..

..

id 값에 \ 백슬래쉬 1개만 입력하면 자동으로  \ \ 2개가 들어간다.
그러면 첫번째 \ 가 두번째 \ 도 문자열로 만들기 때문에 두번째 \ 가 싱글쿼터를 무력화시키는 걸 방해하게 된다.

그래서 id의 2번 싱글쿼터가 무력화되지 않는 것!

 

2차시도)

id 파라미터에 싱글쿼터 1개만 입력하게 되면 '\ 이렇게 들어간다.

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

이 경우에는 id의 3번째 싱글쿼터는 \ 때문에 문자열이 되겠지만, id의 2번째 싱글쿼터가 생존하고 있으므로 실패

 

3차 시도)

id = " 더블쿼터를 넣게 되면 뒤에오는 \ 가 싱글쿼터를 문자열로 잘 만들게 되면서 공격이 성공한다.

id=' [ " \' and pw= ]' or 1=1 # '   : 노란색 부분이  id의 파라미터에 들어가는 문자열이 된다

 

solve!!!!!

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

[LOS] step19. xvais 풀이  (1) 2023.06.15
[LOS] step18. nightmare 풀이  (0) 2023.06.14
[LOS] step16. SUCCUBUS 풀이  (0) 2023.06.14
[LOS] step15. assassin 풀이  (0) 2023.06.14
[LOS] step14. giant 풀이  (0) 2023.06.13

+ Recent posts