본문 바로가기
WarGames/SQL Injection

Lord of SQL Injection : Succubus[16]

by madevth 2021. 12. 14.
반응형

[Level 16. Succubus] Sol → ?id=\&pw=or 1=1%23

id와 pw에 값을 넣되, 작은따옴표('), 온점(.), 언더바(_)등을 사용할 수 없는 문제이다.

clear 조건이 result ['id']가 존재하는 것이므로 id, pw를 정확히 맞힐 필요 없이 쿼리가 참이되기만 하면 된다.

 

쿼리를 참으로 만들기 위해 쓸 수 있는 트릭들, union이나 and 1 = 1 등은 모두 기존의 작은따옴표를 닫아주어야 사용이 가능한데, 작은따옴표를 사용하지 않고 어떻게 작은따옴표를 닫아줄 수 있을까?

우리가 트릭을 사용할 수 있는 인자가 2개라는 점, 그러니까 pw값 뿐만 아니라 id 값도 조작할 수 있다는데서 힌트를 얻어 작은따옴표를 만들어줄 수 있다. 바로 id=''의 두 번째 따옴표를 무효화해주고 pw=''의 첫 번째 따옴표와 쌍을 이루어주는 것이다.

작은따옴표(') 앞에 \를 사용하면 \'가 되어 문자열 '로 인식한다. 따라서 id 값에 \를 넣어주면 쿼리는 다음과 같이 바뀐다.

select id from prob_succubus where id='\' and pw=' or 1=1#'

작은따옴표(')부터 pw= 까지를 하나의 문자로 인식하게 하고, 뒤에 or 1=1을 넣음으로써 쿼리를 참으로 만들 수 있다.

반응형

댓글