본문 바로가기

Webhacking/LOS[Lord Of Sql injection]

[LOS 1번 : Gremlin] 문제 풀이

728x90
반응형

LOS 1번 Gremlin을 풀어보겠습니다.

1번 박스를 보면, 어떤 SQL 쿼리를 실행시키고자 하는지 확인이 가능하며, 

2번 박스를 통해 어떤 조건을 성립해야 문제가 풀리는지 확인이 가능합니다.

- 1번 박스 : id와 pw를 입력받아 prob_gremlin 테이블에 해당 정보가 있는지 조회한다.

- 2번 박스 : 1번 박스를 통해 조회를 성공하여 id 데이터를 불러왔다면, 문제는 풀린다.

하지만 저희는 ID나 PW에 대한 그 어떤 정보도 받은적이 없습니다. 

그렇다면 문제의 의도가 무엇인지 바로 짐작이 됩니다. 

"ID와 PW를 모르는 상태로 로그인을 성공시켜라" 가 이 문제의 의도라는것을 알 수 있습니다.

3번 박스를 통해 id 파라미터에 공격을 수행하였으며, 

4번 박스를 통해 공격을 성공하여 문제가 풀림을 확인할 수 있습니다.

- 3번 박스

id와 pw를 모르는 상황에서는 당연히 로그인에 실패 즉 쿼리의 결과 값이 false가 나올 수 밖에 없습니다.

그렇다면 쿼리의 결과를 임의로 참으로 만들어, 어떠한 아이디로든 값이 불러와만 진다면, 반대로 당연히 로그인에 

성공할 것입니다. 그를 위한 공격 방식은 아래 순서와 같습니다. 

1. id를 모르는 상태이기에 임의의 문자 입력 

2. 문자열의 범위에서 벗어나 쿼리를 조작하기 위해 싱글쿼터(')를 입력하여 문자열을 종료시킴

3. 뒤에 or 1<2 라는 구문을 넣어, or을 통해 앞의 조건이 실패하더라도 뒤의 조건인 1<2라는 참이 되는 조건으로 쿼리를 실행

4. 마지막으로 공격구문 삽입 이후, 뒤에 남아있는 쿼리 조건을 무력화 시키기 위해 주석 --(공백)을 넣어줌

- 4번 박스 : 공격 성공 후 문제 해결


728x90
반응형