WarGame/[Lord of SQL Injection]

[Lord of SQL Injection] 1번 문제 gremlin

최기호 2020. 6. 23. 19:13

LOS에 로그인을 하면 가장 먼저 

 

gremlin

cobolt

goblin

orc

등등 문제에 이름을 붙여놓은 리스트가 있다.

 

 

 

첫 번째 문제를 풀어야 다음 문제로 넘어 갈 수 있는 시스템으로 되어있다.

 

차근차근 첫 번째의 Gremlin 문제를 풀어보도록 하겠다.

 

문제를 클릭하고는 맨 처음은 무엇을 하라는 것인지 한참 고민했다.

우선 PHP 언어로 된 코드를 천천히 살펴보았다. 위의 PHP 코드는 간단하게 DB의 정보를 SQL 쿼리문을 이용하여 ID 와 PW가 일치하는지 확인하는 간단한 코드이다.

 

1번 문제는 SQL Injection의 기본 지식을 가지고 풀 수 있을 것같다.

이 웹 사이트는 GET방식을 이용하므로 도메인의 뒤에 값을 주어 변수 값을 수정할 것이다.

이런식으로 주소창의 뒤에 ?id=admin&pw=1'or'1'=1 을 추가로 입력해주면 된다.

이 내용은 사실 id는 중요하지않다. 임의로 admin이라는 id를 알맞은 패스워드로 로그인한다는 방식이다.

뒤의 pw=1'or'1'='1 은 패스워드를 1 이라고 입력하고 or 문을 이용하여 1이 아니여도 '1'='1' 은 항상 참이기 때문에 SQL 쿼리문이 항상 참으로 동작할 수 있도록 한다.

 

 

 

다른 방식으로는 뒤의 pw 입력하는 것을 주석처리 하는 방법도 존재한다.

이처럼 뒤에 ?id=admin%27%23을 적엇지만 이는 %27은 ' 을 표현하고 %23은 # 을 표현한다.

URL에서의 # 은 공백을 표현하기 때문에 %23 이라는 값을 주어야 변수 값을 수정할 수 있다.

 

admin'# 이라고 입력한 것은 #은 SQL 쿼리문에서 주석처리 할때 사용된다. 그러므로 admin 뒤 부터는 주석처리를 하여 뒤에는 무시가 되는 쿼리문을 이용한 것이다.