풀이를 보다가 흥미로운 풀이를 발견해서 기록 남길 겸 작성.
local variable을 사용한 sql injection 기법이다.
성공한 쿼리는 다음과 같다.
pw=1'||(select @a:=pw where id='admin') union select @a -- g
번거롭지 않고 깔끔하게 답이 바로 나온다. 멋진 해답이다.
local variable을 위와 같이 설정할 수 있으며, 굳이 select를 사용하지 않고도 설정이 가능하다.
(@a:=pw) union select @a
와 같이 사용 가능하다. 다만, select를 넣어줘야 where 절 사용이 가능할 것이다.
위 방법을 사용해서 los의 다른 문제들도 쉽게 풀 수 있다.
특히 blind sql injection 문제 중에서, 몇몇 문제는 굳이 코드를 짜지 않고 빠르게 풀 수 있는 장점을 보였다.
다만, rubiya님이 이것을 알고 있어서인지 방어를 해 놓은 문제들도 보였다.
코드가 위와 같이 구성되어 있으면 해당 기법을 사용할 수 없다..