본문 바로가기

Wargame/Lord of SQLInjection

Lord of SQLInjection 18번 nightmare

 

id!='admin'은 고정적인 것 같고 pw에 값을 입력하는 것 같다.

pw에 참인 값과 뒤 query를 무시할 수 있는 주석을 같이 넣어주면 될 것 같다.

최대 6글자까지 사용할 수 있다.

코드를 보면 #를 사용하지 못한다. 이 대신 사용할 수 있는 것을 찾아보았다.

주석 처리가 가능한 것들

  1. --
  2. #
  3. ;%00

코드를 보면 1과 2는 사용할 수 없기 때문에 3을 사용했다. 

현재 ;%00을 넣는다고 치면 query는 pw=(';%00') and id!='admin'가 된다.

그럼 앞에 있는('를 받아줄 게 없기 때문에 똑같이 ')도 추가해준다.

지금 쿼리는 pw=('')만 존재하는 것과 다름없고 현재 쓴 것은 ');%00이고 %00는 1글자로 처리되기 때문에 총 4글자를 사용한 셈이다. 남은 글자는 총 2글자인데 참을 만들어야 한다. 이거에 대해서 고민을 좀 많이 했었는데 현재 있는 것은 ('')이다 여기서 참을 2글자로 만들려면

 

 

이렇게 =0를 붙여준다. 찾아보니 1=1과 같은 뜻으로 ('')=0 또한 사용된다. 그러므로 참이 성립되기 위해 =0를 붙여준다.

 

답 : pw=')=0;%00