-
[LOS] 16. succubus 문제 풀이Wargame/LOS (Lord of SQL Injection) 2019. 7. 22. 15:08
id와 pw를 입력받을 때, 둘 다 싱글 쿼터(')를 필터링한다.
이전에 싱글 쿼터(')는 더블 쿼터(")로 우회할 수 있다고 했는데, 사실 이 방법은 쌍으로 사용할 때나 먹히는 방법이다. 즉, 싱글 쿼터(')가 하나 열려있는 상태에서는 더블쿼터(")로 막을 수 없다. ('admin" 이렇게 사용할 수 없다는 뜻)
이 문제에서는 id와 pw를 동시에 입력받으므로, 이를 이용해 싱글 쿼터(')를 우회해보자.
싱글 쿼터(') 앞에 백슬래시(\)를 입력하면 싱글 쿼터(')는 문자로 인식된다.
따라서, id='' and pw='' 에서 \를 입력하면, id의 닫는 싱글 쿼터(')가 문자로 인식되어 해당 싱글 쿼터(')가 제 기능을 하지 못하게 된다. 결국 pw의 여는 싱글 쿼터(')가 id의 닫는 싱글 쿼터(') 역할을 대신하게 된다.
id='\' and pw=''
즉, \로 인해 id의 문자열은 '\' and pw='가 되어 pw= 뒷부분은 쿼리로 인식된다.
이러한 점을 이용하여, id의 인자로 \를 전달하고, pw의 인자로 "1" or 1=1--%20을 전달하면, 최종 쿼리문이
id='\' and pw="1" or 1=1-- '
이 되어 참이 된다. (--%20은 pw에 남아있는 싱글 쿼터(')를 주석으로 처리한다.)
id=\&pw="1" or 1=1--%20
'Wargame > LOS (Lord of SQL Injection)' 카테고리의 다른 글
[LOS] 18. nightmare 문제 풀이 (0) 2019.07.22 [LOS] 17. zombie_assassin 문제 풀이 (2) 2019.07.22 [LOS] 15. assassin 문제 풀이 (0) 2019.07.19 [LOS] 14. giant 문제 풀이 (0) 2019.07.19 [LOS] 13. bugbear 문제 풀이 (0) 2019.07.19