[웹해킹] SQL 인젝션 공격 실습 - High 단계

DVWA Security Level을 High로 설정하고 SQL Injection 페이지로 간다.

High 단계의 SQL Injection 페이지에는 링크가 있는데 이 링크를 눌러보자.

 

 

다음과 같은 창이 뜨고 여기에 ID 1을 입력하면

 

 

그 결과가 원래 페이지에 표시되는 구조이다. Low 단계와 비교했을 때 폼을 새로운 창에서 입력 받는 차이가 있다. 하지만 만약 이것 뿐이라면 Medium 단계에서 보았듯이 GUI의 변화는 SQL 인젝션 공격을 전혀 막을 수 없다.
소스 코드를 한 번 보도록 하자.

 

 

 


소스 코드를 보면 LIMIT 이라는 키워드를 이용하여 출력되는 레코드의 수를 조절하고 있다. 무조건 하나만 출력 되도록 막고 있는 것이다. 하지만 이것 역시 SQL 인젝션 공격을 방어하는 용도로는 아무런 의미가 없다. id 부분 뒤를 주석 처리만 하면 끝나는 문제이다. 입력 창에 1 대신 1' or '1'='1'# 을 입력한다.

 

 

 

위와 같이 SQL 인젝션 공격이 실행 되었다.

UNION 공격은 이전 단계에서도 주석 처리를 했었기 때문에 그대로 사용 해도 무방하다.
1' union select user,password from users# 을 입력한다.

 

 

union 공격도 실행이 된다.
결국 client 단계에서 아무리 사용자가 입력하는 값을 차단하고 막으려고 해도 그것은 불가능 하다는 것을 알 수 있다. 이 SQL 인젝션 공격에 대응하기 위해선 서버쪽에서 해결이 되어야 한다.

댓글

Designed by JB FACTORY