LOS 문제 1번 [GREMLIN] 풀이

SQL Injection Web Hacking GAME 

문제 1 Gremlin

 


 

[1] Gremlin

정규표현식을 배우기 전에는 멋모르고 query문에  주구장창 prob_gremlin만 입력한 덕분에

매번 위의 저 No Hack ~_~ 문구와 마주했었다. 

 

Injection은 공격자가 악의적으로 주입한 데이터를 웹 애플리케이션에서 DB의 정상적인 쿼리문 일부로 인식을 하고 실행하게 되는 것을 말하며, SQL 인젝션은 DB 언어인 SQL문을 사용한다.

 

위의 문제에서 주목해야 할 점은 아래에서 3번째 줄 코드인

[1] Gremlin

if ( $result ['id'] ) solve ("gremlin"); 이다.

쿼리문이 실행되었을 때 id의 값이 존재하기만 하면 문제가 풀린다는 것을 알 수 있다.

 

id의 값을 무조건 참이 되도록 쿼리묵을 작성해보자

 

.php? 부터 시작되는 쿼리문에 

id=a%27%20or%201=1%23 라는 코드를 넣어본다.

 

 

* URL 인코딩 코드 값으로 입력을 하는 것이 URL 상에서 인식할 때 용이하므로 #(주석처리) 또는 ' (SIingle quotation)은 가급적 각각 %23과 %27을 사용한다. ( space bar는 %20으로 변환 )

 

[ 결과 ]

Clear 메세지가 뜬 것을 확인할 수 있다.

[ 원리 ]

id의 값으로 아무 값이나 넣고 or 를 작성하면 둘 중 하나만 참이어도 참(1)이기 때문에

or 뒤에 1=1이라는 코드를 넣어 반드시 참으로 만든다.

뒤에 다른 코드들이 실행되지 않도록 %23(주석 #)을 붙여 처리하면 정답 화면이 출력된다.