SQL Injection (2)

밍기적·2022년 12월 25일
0

웹해킹

목록 보기
13/35

실제 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 변수에 추가되어 오류가 발생하는 상황을 확인할 수 있습니다

  • password='$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 코드를 삽입하여 여러가지 기능을 사용할 수 있습니다

  • password='$PASSWORD AND ANY CODE'#'

이렇게 원하는 코드를 삽입하여 실행시킬 수도 있으며 해당 코드는 대상 시스템에서 실행되므로 매우 위험한 취약점입니다

0개의 댓글