paperHun

LOS 1번 본문

Lord of SQLInjection

LOS 1번

paperHun 2021. 7. 11. 16:35

los 1번을 풀어보겠다.

los_gremlin

먼저 코드를 보자면, 가장 먼저 위에 있는 query문이 눈에 띈다. query 문이란 데이터 베이스에 있는 정보를 요청하는 것인데, select id from prob_gremlin에서 id는 쿼리문이 요청하는 정보이고, prob_gremlin은 id가 담겨있는 데이터 베이스를 의미한다. 뒤에 있는 where id='' and pw=''는 쿼리문이 가져오려는 id의 조건문이다. 

 

los_gremlin 해결조건

이제 query문이 무엇인지 알았으니 los_gremlin의 해결조건을 보자, solve("gremlin")이라는 함수가 보이니 result['id']가 참이되면 해결 되는거 같다.

 

id 값에 admin 을 넣어주니  해결되는 모습

 

보통 id값에 admin이 있기 때문에 id='admin'을 해주면 풀리긴 한다. 여기서 #은 뒤에 있는 ' and pw=''를 주석처리해주는 문자이다. 만약 주석 처리를 하여주지 않는다면, id가 'admin'이면서 pw가 공백인 id 값을 찾을텐데, 보통 pw가 공백이진 않을테니 pro_gremlin에서 어떠한 id 값도 찾아내질 못해 풀어지지 않을꺼기 때문에 그런 불상사를 막기 위해 주석 처리를 하여준다. 이렇게 되면 id='admin'인 id값을 찾아 준다.

 

 

이렇게 admin을 찾아 주어도 되지만prob_gremlin안에 어떤 id 값이 있는지를 모르니 id가 admin인거를 찾지말고, 원래 조건문이 참이면 된다는것을 이용하여 보자.

 

 

위에서는 id값이 admin인 친구를 데려와서 참으로 만들어주었다면 여기서는 where문을 그냥 참으로 만들어주었다. 이렇게 되면 쿼리문이 참이 되면서 gremlin이 풀리게 된다.

'Lord of SQLInjection' 카테고리의 다른 글

LOS 6번  (0) 2021.07.11
LOS 5번  (0) 2021.07.11
LOS 4번  (0) 2021.07.11
LOS 3번  (0) 2021.07.11
LOS 2번  (0) 2021.07.11