Lord of SQL Injection

Lord of SQL Injection 1번 문제 - GREMLIN

ilsancityboy 2024. 5. 2. 19:55

https://los.rubiya.kr/

 

https://los.rubiya.kr/gate.php

 

los.rubiya.kr

SQL 인젝션 실습 공부를 할 수 있는 페이지이다.

1번문제부터 보겠다.

 

 

먼저 쿼리구문을 보여주며 php 소스코드를 보여준다.

한줄씩 해석하자면 

 

config.php 파일 참조
login_chk() 함수 사용
db 연결
$_GET[id] (입력받은 아이디) 에서 prob, _ , . , () 가 있다면 No Hack ~_~ 을 반환합니다.
$_GET[pw] 에서도 똑같이 확인합니다
입력받은 $_GET[id]와 $_GET[pw] 를 prob_gremlin 테이블에서 일치하는게 있는지 확인합니다.

 

이다.

아이디와 비밀번호를 admin으로 대입해본다.
GET방식으로 입력값을 받아들이기때문에 url뒤에 ? 를 붙여 파라미터를 직접 대입해 전송한다.

 

하지만 풀리지않는다. 왜냐면 해당 admin이라는 회원 데이터가 데이터베이스안에 있는지 알수 없기때문.

그럼 데이터베이스 안에 있는 데이터를 직접 하나하나 때려맞추지 않고는 풀수없다.
따라서 SQL인젝션으로 아이디와 비밀번호를 아무거나 입력후 or '1'='1' 을 입력해 무조건 조건이 참이 되게 보낸다
?id=1234&pw=1234 or '1'='1' 입력

입력시 사이트에서 어떤식으로 쿼리 구문이 날라갔는지 보여준다.

 

pw='1234 뒤에 따옴표로 닫아주지않았고 

마지막 부분을 보면 '1'='1'' 으로 작은 따옴표가 2개가 들어가있는것을 확인.

 

'1234와 '1'='1'이 아닌 '1'='1'' 으로 자동으로  입력받은 구문에 따옴표 추가되어 전달되기때문에

1234뒤에는 직접 따옴표를 넣어주고 마지막부분은 닫는 ' 를 입력하지않고 자동으로 추가되며 전달되게끔
'1'='1  만 입력하면 참이 될 것으로 보인다.

?id=1234&pw=1234' or '1'='1

입력 

 

 

성공