sql injection
- Web hacking 기법 중 하나로서 DB에 질의하는 과정에서 일반적인 값 외 악의적인 의도를 갖는 구문을 삽입하여 공격자가 원하는 SQL 쿼리문을 실행하는 기법
- Sql Injection의 피해가 커짐에 따라 입력값 검증, 저장프로시저를 이용하는 방식으로 sql injection을 막는다.
이제 sql injection의 첫번째 String injection을 풀어보려고 한다.(OS : kali linux)
1. 다음과 같이 로그인 후(webgoat / webgoat)을 들어간 후 LAB : SQL Injection에서 stage 1 : String SQL Injection을 클릭한다.
2. 문제를 해석하면 ' String SQL Injection을 이용하여 인증을 우회하라, SQL Injection을 이용하여 Nevile(Boss)의 ID로 로그인을 하는데 옳은 패스워드를 이용하지마라' 대충 이런 소리이다.
이제 burpsuite를 킨다.
그 후 다음과 같이 Intercept is off를 눌러 on으로 바꿔줘 서버로 보내는 패킷을 잡아서 sql injection을 해보자
3. 문제에서 Nevile의 ID를 이용하여 SQL Injection을 행하라고 했으니 Nevile로 골라주고 비밀번호를 아무거나 입력을 해준다. 그후 Burp Suite에 잡힌 패킷을 확인해보면
다음과 같이 employee_id ==112&password=123123이라는 구문을 확인할 수 있다.
여기서 우리는 Nevile의 ID는 112이라는 것을 알 수 있다(별 필요는 없음)
4. 이제 여기서 SQL Injection을 사용할 것이다.
SQL Injection에서 가장 많이 쓰이는 구문이 SELECT * FROM 테이블명 WHERE 테이블요소명' or 1='1이다.
우리는 여기서 패스워드를 가지고 우회를 할 것이기에 password에다가 sql injection을 사용하려 한다.
다음과 같이 입력한 비밀번호 123123 뒤에 ' or 1='1을 입력을 한 후 Intercept is on을 다시 한번 눌러주면 다음과 같이 Nevile의 권한을 얻어 모든 것을 다 확인할 수 있다.