웹해킹/DVWA

SQL 인젝션 공격 (3)

만년필석사 2020. 1. 28. 14:34
반응형

1. SQL 인젝션 공격 High 단계 실습

[그림 1-1] SQL 인젝션 공격

DVWA 레벨을 high 설정한 SQL Injection 탭을 클릭하면 기존과는 다르게 영어로 링크가 있다. 링크를 클릭한다.

 

[그림 1-2] 소스코드

SQL 인젝션 공격에 앞서 소스코드를 확인하면 '$id' 뒤에 LIMIT라는 쿼리가 추가 되어 있는데 쿼리는 레코드의 개수를 제한한다. 현재 쿼리는 1 제한 되어 있지만 부분을 우회하기 위해 주석처리를 한다면 우회가 가능하다.

 

[그림 1-3] SQL 인젝션 공격

앞에 값이 참이든 거짓이든 부분을 참으로 만들어 쿼리가 동작하는 구문을 삽입한다. 1' or '1'='1'# 입력한 전송한다. # 주석으로 소스코드에서 Limit 1 우회하기 위해 사용된다.

 

[그림 1-4] 공격 성공

1' or '1'='1'# 입력한 전송된 결과 SQL 인젝션 공격이 성공했음을 확인할 있다. Limit 1 우회되면서 전체 데이터베이스의 정보를 출력된다.

 

[그림 1-5]  테이블 정보

테이블 정보를 확인하기 위해 union SQL 공격 구문을 삽입한다. 1' union select user, password from users# 삽입하고 전송한다. Users 테이블에서 user, password 컬럼을 숫자 1 조합해 참을 만들어 추출한다는 쿼리다.

 

[그림 1-6]  테이블 내용

1' union select user, password from users# 쿼리 전송 결과 아이디, 패스워드로 보이는 정보들이 노출되었음을 확인할 있다. 패스워드는 암호화 되어 있지만 MD5 형식이고 구글에서 쉽게 평문으로 변환이 가능하다.

반응형