ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JS, PHP, MYSQL] 로그인, 로그인 우회 - 1
    Web - Security/Login 2023. 4. 29. 17:17

     

    가장 기본적인 로그인 기능을 만들어 보았고 이를 우회하는 방법을 정리해 보았다

     

    로그인 페이지

    데이터 베이스 접속을 위해 데이터 베이스 접속 전용 페이지를 만들어 주었다
    mysqli_connect("localhost", "사용자 이름", "비밀번호", "데이터 베이스 이름") 순으로 작성해 줬다

    그리고 이 명령어를 $login_1db 라는 변수를 만들어 대입해 주고
    다음에 사용할 때는 긴 명령어 대신 짧은 $login_1db를 사용하도록 해줬다

     

    로그인페이지를 만들어 줬다
    ! 를 입력하고 엔터를 누르면 나오는 기본적인 세팅으로 하였으며 body 부분에 내용을 추가했다

    아이디와 비밀번호를 입력받은 뒤 login_1.php로 값을 보내어 로그인 성공 또는 실패를 확인하도록 했다

     

    데이터 베이스에 접속하기 위해 login_1db.php 파일을 가져온 뒤
    로그인 페이지에서 입력받은 값을 $id, $pw 변수에 대입해 준다

    sql 질의문을 작성해 주고 데이터베이스에 보낸 다음 그 결과를 $result 변수에 담아주도록 한다

    만약 결과가 존재한다면 로그인 성공 메시지를 띄운 뒤 login_1success.html로 이동시켜 주고
    만약 결과가 존재하지 않는다면 로그인 실패 메시지를 띄운 뒤 login_1.html로 이동시켜 준다

     

    로그인에 성공하면 login - success 가 보이도록 만들었다

     

     

    로그인 및 우회를 위하여 데이터베이스를 만들고 값을 추가해 줬다 ( 회원가입 기능 제외 )

     

    로그인 테스트

    phpMyAdmin을 사용하여 test 데이터베이스 아래에 login_1.db 라는 테이블을 생성하였다 

     

    위와 같이 간단하게 설정해 주고 no 를 기본키로 해주었다

     

    위와 같이 실험용 데이터를 추가해 줬다

     

    정상적으로 값이 추가되었고 로그인 성공유무부터 테스트해 보았다

     

    데이터 베이스에 입력된 값으로 로그인하니 로그인에 성공하였다

     

    데이터 베이스에 입력되지 않은 아이디와 비밀번호로 로그인하니 로그인에 실패하였다

     

     

    login_1  -  로그인 우회

     

    CASE 1 - SQL Injection

    가장 기본적인 SQL Injection을 시도해 보았고 결과는 예상대로 로그인에 성공하였다

     

    < 아이디 입력, 비밀번호 공란  ->  로그인 성공 >

     


    < 아이디 공란, 비밀번호 입력  ->  login_1.php 이동, 하지만 빈 페이지 확인 >

     

     

    CASE 2 - 로그인 성공 페이지 바로 이동하기

    login_1.html 에서 로그인을 클릭하면 login_1.php로 이동한다는 것을 확인했다

    login_1을 기본으로 하여 다른 페이지가 만들어지므로
    login_2.html , login_1succes.html , login_1_success.html 등등 로그인 성공 페이지이름을 유추하여 바로 이동한다

     

     

    대응방안

     

    CASE 1 - SQL Injection

    로그인 페이지에서 받은 입력값을 그대로 사용하지 않고 mysqli_real_escape_string() 와 같은 함수를 사용하여 검증해줘야 한다

     

    CASE 2 - 로그인 성공 페이지 바로 이동하기

    로그인 성공 페이지에서는 로그인에 성공을 해야만 페이지에 접근이 가능하도록 추가인증을 해 줘야 한다

     

     

    728x90
Designed by Tistory.