본문 바로가기

컴퓨터/참고 사이트 및 팁

SQL Injection 공부하기

웹 해킹을 보면 SQL Injection, XSS, LFI 등의 공격 방법이 있습니다.


특히 SQL Injection의 경우에는 성공만 한다면 모든 계정 정보 및 게시판에 대한 모든 정보(비밀 글로 등록한 경우에도)뿐만 아니라 관리자와 같이 행동을 할 수도 있기 때문에 매우 위험한 공격이라고 볼 수도 있습니다.


이러한 공격을 막는 가장 쉬운 방법은 쿼리 빌더(Query Builder)를 사용하거나 혹은 쿼리에 값을 넣어서 실행하기 전에 addslashes와 같은 이스케이프 함수를 이용해서 공격을 할 수 없도록 하면 됩니다. 물론 이렇게 이스케이프 함수를 이용하더라도 이를 우회할 수 있는 방법이 상황에 따라 존재하기 때문에 주의해야 합니다.


SQL Injection 공격을 어떻게 하는지를 안다면 그것을 어떻게 하면 막을 수 있을 지도 알 수 있다는 것을 의미합니다. 그렇기 때문에 SQL Injection을 어떻게 하는지를 공부하는 것은 사이트의 보안을 강화하는데 도움이 됩니다.


많은 웹해킹 사이트를 보면 SQL Injection 공격이 들어 있는 것을 볼 수 있습니다. (전문적으로 SQL Injection에 대한 문제만을 올려놓은 사이트도 있지요. Rubiya님이 제작하신 Lord Of Sql Injection 1, 2) 다만 이러한 문제들의 경우에는 어떤 취약점을 공략해야 하는지에 대해서 설명이 없기 때문에 처음 공부하는 입장에서는 어려움이 있을 수밖에 없습니다.


아래 링크는 이러한 어려움을 해결한 SQL Injection 문제들을 모아놓은 것입니다. 해당하는 문제에 대한 취약점을 간략히 써놓았습니다.


https://github.com/Audi-1/sqli-labs


위 링크에 있는 소스코드를 모두 받으셔서 서버를 해당 사항에 맞게 세팅을 하시면 됩니다. 참고로 database_name의 경우에는 건들지 않는 편이 좋습니다. 수정하려면 전체 파일을 여셔서 해당하는 부분의 내용도 수정하셔야 합니다...


다루고 있는 내용은 기본적인 SQL Injection부터 해서 Blind SQL Injection 까지 다루고 있습니다.


태그