ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Login Logic Case 분석
    웹 해킹 2024. 6. 16. 18:03

    서버 소스코드에서 로그인 처리를 할 때 여러가지 변수에 따라 로그인 로직이 나뉜다.

     

    WHERE문 뒤부터 설명하겠다.

     

    CASE: 식별/인증

    1. 식별/인증 동시 id 먼저

    DB에서 id='___' and pass='___' 에 충족하는 데이터를 가져오는 동시에 가져오는데 성공한다면 id식별과 password로 인한 인증을 동시에 한 것이다. 이때 sql문에서 id가 먼저 온다.

     

    2. 식별/인증 동시 pass먼저

    DB에서 pass='___' and id='___' 에 충족하는 데이터를 가져오는 동시에 가져오는데 성공한다면 id식별과 password로 인한 인증을 동시에 한 것이다. 이때 sql문에서 pass가 먼저 온다.

     

    3. 식별/인증 분리

    DB에서 id='___' 에 해당하는 데이터를 식별해 먼저 가져온 다음, 그 다음 코드에서 입력한 pass와 db에서 가져온 pass를 비교한 뒤 인증하는 방식이다.


    CASE: 괄호

    1. 괄호 없음

    sql문이 예를 들어 '식별/인증 동시 id먼저'일때 id='___' and pass='___' 인 경우이다.

    2. 괄호 id, pass 각각

    sql문이 예를 들어 '식별/인증 동시 id먼저'일때 (id='___') and (pass='___') 인 경우이다.

    3. 괄호 동시에

    sql문이 예를 들어 '식별/인증 동시 id먼저'일때 (id='___' and pass='___') 인 경우이다.

    또한 '식별/인증 분리' 일때는 '괄호있음'에 해당하며 (id='___' ) 로 생각하면 된다.

     


    CASE: 개행

    1.개행X

    sql문이 예를 들어 '식별/인증 동시 id먼저'일때 id='___' and pass='___' 인 경우이다. 줄 바꿈이 존재하지 않는다.

    2.개행O

    sql문이 예를 들어 '식별/인증 동시 id먼저'일때

     

    id='___'

    and pass='___' 인 경우이다. 줄 바꿈이 존재한다. 

     


    CASE: 해쉬 Hash

    1.해쉬X

    로그인 시 비밀번호를 해쉬처리해서 비교하지 않는다.

    2.해쉬O

    로그인 시 비밀번호를 해쉬처리해서 비교한다.

    이때 주로 사용되는 해쉬 알고리즘에 따라 'SHA-1'와 'MD5'로 또 나뉠 수 있다.

     


    CASE: Quote 사용 (따옴표 종류)

    1.Single Quote 사용 ( ' )

    sql문이 예를 들어 '식별/인증 동시 id먼저' 일때 id='___' and pass='___' 인 경우이다.

    2.Double Quote 사용 ( " )

    sql문이 예를 들어 '식별/인증 동시 id먼저' 일때 id="___" and pass="___" 인 경우이다.

     


     

    Case 조합, 추정 sql문

     

    ident = ['식별/인증 동시 id먼저','식별/인증 동시 pass먼저', '식별/인증 분리']
    paren = ['괄호없음', '괄호id,pass각각', '괄호동시에']
    newLine = ['개행X', '개행O']
    hash = ['해쉬X', '해쉬O']
    quote = ['\'사용', '\"사용']
    
    for i in ident:
        
        for j in paren:
            for k in newLine:
                for l in hash:
                    for m in quote:
                        print("{} |".format(i),end=' ')
                        print("{} |".format(j),end=' ')
                        print("{} |".format(k),end=' ')
                        print("{} |".format(l),end=' ')
                        print("{}".format(m))
    
    
    """
    ident = ['식별/인증 동시 id먼저','식별/인증 동시 pass먼저', '식별/인증 분리']
    paren = ['괄호없음', '괄호id,pass각각', '괄호동시에']
    newLine = ['개행X', '개행O']
    hash = ['해쉬X', '해쉬O']
    quote = ['\'사용', '\"사용']
    파이썬으로 케이스를 조합해서 만들었다.
    식별/인증 동시에 해당할때, 괄호id,pass각각과 개행O에 해당하는 것들은 제외했다.
    그리고 식별/인증 동시에 해당할 때 '괄호동시에'는 '괄호있음'으로 변경하였다.
    """
    /*
    식별/인증 동시 id먼저 | 괄호없음 | 개행X | 해쉬X | '사용
    	SELECT id,pass from member WHERE id='___' and pass='___'
    식별/인증 동시 id먼저 | 괄호없음 | 개행X | 해쉬X | "사용
    	SELECT id,pass from member WHERE id="___" and pass="___"
    식별/인증 동시 id먼저 | 괄호없음 | 개행X | 해쉬O | '사용
    	SELECT id,pass from member WHERE id='___' and pass='___'
    식별/인증 동시 id먼저 | 괄호없음 | 개행X | 해쉬O | "사용
    	SELECT id,pass from member WHERE id="___" and pass="___"
    식별/인증 동시 id먼저 | 괄호없음 | 개행O | 해쉬X | '사용
    	SELECT id,pass from member WHERE id='___' 
        and pass='___'
    식별/인증 동시 id먼저 | 괄호없음 | 개행O | 해쉬X | "사용
    	SELECT id,pass from member WHERE id="___" 
        and pass="___"
    식별/인증 동시 id먼저 | 괄호없음 | 개행O | 해쉬O | '사용
    	SELECT id,pass from member WHERE id='___' 
        and pass='___'
    식별/인증 동시 id먼저 | 괄호없음 | 개행O | 해쉬O | "사용
    	SELECT id,pass from member WHERE id="___" 
        and pass="___"
    식별/인증 동시 id먼저 | 괄호id,pass각각 | 개행X | 해쉬X | '사용
    	SELECT id,pass from member WHERE (id='___') and (pass='___')
    식별/인증 동시 id먼저 | 괄호id,pass각각 | 개행X | 해쉬X | "사용
    	SELECT id,pass from member WHERE (id="___") and (pass="___")
    식별/인증 동시 id먼저 | 괄호id,pass각각 | 개행X | 해쉬O | '사용
    	SELECT id,pass from member WHERE (id='___') and (pass='___')
    식별/인증 동시 id먼저 | 괄호id,pass각각 | 개행X | 해쉬O | "사용
    	SELECT id,pass from member WHERE (id="___") and (pass="___")
    식별/인증 동시 id먼저 | 괄호id,pass각각 | 개행O | 해쉬X | '사용
    	SELECT id,pass from member WHERE (id='___') 
        and (pass='___')
    식별/인증 동시 id먼저 | 괄호id,pass각각 | 개행O | 해쉬X | "사용
    	SELECT id,pass from member WHERE (id="___") 
        and (pass="___")
    식별/인증 동시 id먼저 | 괄호id,pass각각 | 개행O | 해쉬O | '사용
    	SELECT id,pass from member WHERE (id='___') 
        and (pass='___')
    식별/인증 동시 id먼저 | 괄호id,pass각각 | 개행O | 해쉬O | "사용
    	SELECT id,pass from member WHERE (id="___") 
        and (pass="___")
    식별/인증 동시 id먼저 | 괄호동시에 | 개행X | 해쉬X | '사용
    	SELECT id,pass from member WHERE (id='___' and pass='___')
    식별/인증 동시 id먼저 | 괄호동시에 | 개행X | 해쉬X | "사용
    	SELECT id,pass from member WHERE (id="___" and pass="___")
    식별/인증 동시 id먼저 | 괄호동시에 | 개행X | 해쉬O | '사용
    	SELECT id,pass from member WHERE (id='___' and pass='___')
    식별/인증 동시 id먼저 | 괄호동시에 | 개행X | 해쉬O | "사용
    	SELECT id,pass from member WHERE (id="___" and pass="___")
    식별/인증 동시 id먼저 | 괄호동시에 | 개행O | 해쉬X | '사용
    	SELECT id,pass from member WHERE (id='___' 
        and pass='___')
    식별/인증 동시 id먼저 | 괄호동시에 | 개행O | 해쉬X | "사용
    	SELECT id,pass from member WHERE (id="___" 
        and pass="___")
    식별/인증 동시 id먼저 | 괄호동시에 | 개행O | 해쉬O | '사용
    	SELECT id,pass from member WHERE (id='___' 
        and pass='___')
    식별/인증 동시 id먼저 | 괄호동시에 | 개행O | 해쉬O | "사용
    	SELECT id,pass from member WHERE (id="___" 
        and pass="___")
    식별/인증 동시 pass먼저 | 괄호없음 | 개행X | 해쉬X | '사용
    	SELECT id,pass from member WHERE pass='___' and id='___'
    식별/인증 동시 pass먼저 | 괄호없음 | 개행X | 해쉬X | "사용
    	SELECT id,pass from member WHERE pass="___" and id="___"
    식별/인증 동시 pass먼저 | 괄호없음 | 개행X | 해쉬O | '사용
    	SELECT id,pass from member WHERE pass='___' and id='___'
    식별/인증 동시 pass먼저 | 괄호없음 | 개행X | 해쉬O | "사용
    	SELECT id,pass from member WHERE pass="___" and id="___"
    식별/인증 동시 pass먼저 | 괄호없음 | 개행O | 해쉬X | '사용
    	SELECT id,pass from member WHERE pass='___' 
        and id='___'
    식별/인증 동시 pass먼저 | 괄호없음 | 개행O | 해쉬X | "사용
    	SELECT id,pass from member WHERE pass="___" 
        and id="___"
    식별/인증 동시 pass먼저 | 괄호없음 | 개행O | 해쉬O | '사용
    	SELECT id,pass from member WHERE pass='___' 
        and id='___'
    식별/인증 동시 pass먼저 | 괄호없음 | 개행O | 해쉬O | "사용
    	SELECT id,pass from member WHERE pass="___" 
        and id="___"
    식별/인증 동시 pass먼저 | 괄호id,pass각각 | 개행X | 해쉬X | '사용
    	SELECT id,pass from member WHERE (pass='___') and (id='___')
    식별/인증 동시 pass먼저 | 괄호id,pass각각 | 개행X | 해쉬X | "사용
    	SELECT id,pass from member WHERE (pass="___") and (id="___")
    식별/인증 동시 pass먼저 | 괄호id,pass각각 | 개행X | 해쉬O | '사용
    	SELECT id,pass from member WHERE (pass='___') and (id='___')
    식별/인증 동시 pass먼저 | 괄호id,pass각각 | 개행X | 해쉬O | "사용
    	SELECT id,pass from member WHERE (pass="___") and (id="___")
    식별/인증 동시 pass먼저 | 괄호id,pass각각 | 개행O | 해쉬X | '사용
    	SELECT id,pass from member WHERE (pass='___') 
        and (id='___')
    식별/인증 동시 pass먼저 | 괄호id,pass각각 | 개행O | 해쉬X | "사용
    	SELECT id,pass from member WHERE (pass="___") 
        and (id="___")
    식별/인증 동시 pass먼저 | 괄호id,pass각각 | 개행O | 해쉬O | '사용
    	SELECT id,pass from member WHERE (pass='___') 
        and (id='___')
    식별/인증 동시 pass먼저 | 괄호id,pass각각 | 개행O | 해쉬O | "사용
    	SELECT id,pass from member WHERE (pass="___") 
        and (id="___")
    식별/인증 동시 pass먼저 | 괄호동시에 | 개행X | 해쉬X | '사용
    	SELECT id,pass from member WHERE (pass='___' and id='___')
    식별/인증 동시 pass먼저 | 괄호동시에 | 개행X | 해쉬X | "사용
    	SELECT id,pass from member WHERE (pass="___" and id="___")
    식별/인증 동시 pass먼저 | 괄호동시에 | 개행X | 해쉬O | '사용
    	SELECT id,pass from member WHERE (pass='___' and id='___')
    식별/인증 동시 pass먼저 | 괄호동시에 | 개행X | 해쉬O | "사용
    	SELECT id,pass from member WHERE (pass="___" and id="___")
    식별/인증 동시 pass먼저 | 괄호동시에 | 개행O | 해쉬X | '사용
    	SELECT id,pass from member WHERE (pass='___' 
        and id='___')
    식별/인증 동시 pass먼저 | 괄호동시에 | 개행O | 해쉬X | "사용
    	SELECT id,pass from member WHERE (pass="___" 
        and id="___")
    식별/인증 동시 pass먼저 | 괄호동시에 | 개행O | 해쉬O | '사용
    	SELECT id,pass from member WHERE (pass='___' 
        and id='___')
    식별/인증 동시 pass먼저 | 괄호동시에 | 개행O | 해쉬O | "사용
    	SELECT id,pass from member WHERE (pass="___" 
        and id="___")
    식별/인증 분리 | 괄호없음 | 개행X | 해쉬X | '사용
    	SELECT id,pass from member WHERE id='___'
    식별/인증 분리 | 괄호없음 | 개행X | 해쉬X | "사용
    	SELECT id,pass from member WHERE id="___"
    식별/인증 분리 | 괄호없음 | 개행X | 해쉬O | '사용
    	SELECT id,pass from member WHERE id='___'
    식별/인증 분리 | 괄호없음 | 개행X | 해쉬O | "사용
    	SELECT id,pass from member WHERE id="___"
    식별/인증 분리 | 괄호있음 | 개행X | 해쉬X | '사용
    	SELECT id,pass from member WHERE (id='___')
    식별/인증 분리 | 괄호있음 | 개행X | 해쉬X | "사용
    	SELECT id,pass from member WHERE (id="___")
    식별/인증 분리 | 괄호있음 | 개행X | 해쉬O | '사용
    	SELECT id,pass from member WHERE (id='___')
    식별/인증 분리 | 괄호있음 | 개행X | 해쉬O | "사용
    	SELECT id,pass from member WHERE (id="___")
    */

     

    케이스에 맞춰서 로그인 로직을 피할 수 있다.

    '웹 해킹' 카테고리의 다른 글

    3주차 수업 정리  (0) 2024.05.03
    2주차 과제  (0) 2024.04.28
    2주차 수업 정리  (0) 2024.04.28
    1주차 수업 정리  (1) 2024.04.19
Designed by Tistory.