실제 SQL Injection을 테스트하기 위해 Mutillidae에서 회원가입을 진행했습니다
아이디 : test
비밀번호 : 123456
으로 생성 뒤 로그인을 했습니다
오른쪽 상단에 test와 서명으로 test_sign을 볼 수 있습니다
이제 SQL 인젝션을 활용해보겠습니다
로그인 페이지는 login.php 파일에서 입력값을 확인하는 과정을 진행합니다
일반적인 로그인 상황에서 아이디 폼에 test를 비밀번호 폼에 SQL 오류를 발생시킬 ' 를 입력해봅니다
SQL 오류 창이 발생하며 파일과 어디에서 오류가 발생했는지 상세하게 보여줍니다
' 를 입력하면서 발생한 메시지를 확인해봅니다
SELECT * FROM accounts WHERE username='test' AND password='''
username에는 아이디로 입력한 test가 '는 password 변수에 추가되어 오류가 발생하는 상황을 확인할 수 있습니다
이제 패스워드 입력값으로 123456' AND 1=1#라고 입력해봅니다
SELECT * FROM accounts WHERE username='test' AND password='123456' AND 1=1#'
입력 시 정상적으로 동작할 것이라고 생각합니다
정상적으로 로그인되었고 오른쪽 상단에서 로그인된 상태를 확인할 수 있습니다
이제 1=1이 아닌 1=2를 입력 시 로그인이 되지 않고 오류가 발생해야 합니다
SELECT * FROM accounts WHERE username='test' AND password='123456' AND 1=2#'
1=2는 맞지 않기 때문입니다
오류 발생 페이지를 확인할 수 있습니다
이로서 사용자의 입력값을 웹사이트에서 사용하는 것을 확인할 수 있고 암호 필드에 SQL 코드를 삽입하여 여러가지 기능을 사용할 수 있습니다
이렇게 원하는 코드를 삽입하여 실행시킬 수도 있으며 해당 코드는 대상 시스템에서 실행되므로 매우 위험한 취약점입니다