-
[LOS] 20. dragon 문제 풀이Wargame/LOS (Lord of SQL Injection) 2019. 7. 29. 19:39
id='guest' 다음에 #이 있어서, and pw='~ 부분이 주석으로 처리되었다. 이 주석 처리를 피해서 id를 admin으로 바꾸면 문제가 풀릴 것이다.
#은 한 줄만 주석 처리되기 때문에, 쿼리문이 멀티 라인으로 이루어진 경우에 첫 줄에 #이 있으면 그 첫 줄만 주석 처리되고 나머지 두 줄은 주석으로 처리되지 않는다.
따라서, pw 인자 부분에 개행 문자(\n, %0a)를 넣어준 다음에 원하는 쿼리문을 작성한다면,
select id from prob_dragon where id='guest'# and pw='%0a or id='admin'
# and pw=' 부분까지만 주석으로 처리되고 이 뒤의 문자열들은 모두 쿼리문으로 인식될 것이다.
그래서 위와 같이 쿼리문을 작성하여 pw의 인자를 넘겨주었다.
?pw=%0a or id='admin
그런데 이렇게 하니 여전히 Hello guest가 출력되었다. 테이블에 admin보다 guest가 먼저 들어가있는 듯하다.
그래서 pw에 아무거나 넣어서 앞의 쿼리문이 거짓이 되게 만든 다음, 다시 or id='admin'을 넣었더니 admin이 출력되었다.
?pw=%0a and pw='1' or id='admin
'Wargame > LOS (Lord of SQL Injection)' 카테고리의 다른 글
[LOS] 22. dark_eyes 문제 풀이 (0) 2019.07.31 [LOS] 21. iron_golem 문제 풀이 (2) 2019.07.30 [LOS] 19. xavis 문제 풀이 (4) 2019.07.24 [LOS] 18. nightmare 문제 풀이 (0) 2019.07.22 [LOS] 17. zombie_assassin 문제 풀이 (2) 2019.07.22