Blind SQL Injection
안녕하세요-!!
오늘은 Blind SQL Injection에 대해서 알아볼까 합니다ㅎㅎㅎ
다같이 출발~~!!
잠깐-!! 그전에 SQL Injection에 대해서 간단히 알고 시작하도록 하겠습니다.
SQL Injection은 악이적 사용자가 보안의 취약점을 이용하여 임의의 SQL문을 주입시키고 실행시켜 DB가 비정상적인 동작을 하도록 조작하는 것입니다-!! 다음 공격은 OWASP Top10 중 첫번째에 속하지만 공격이 비교적 쉽습니다. 따라서 공격 성공시 많은 피해를 입을 수 있는 공격입니다.
|
이제 진짜로 Blind SQL Injection을 시작합니다~~!!
먼저, Blind SQL Injection에 대해서 알아보도록 하겠습니다_!!
데이터베이스로부터 특정한 값이나 데이터를 받지 않고, 단순하게 참과 거짓의 정보만 알 수 있을 때 이것을 이요하여 DB정보를 취득하고자 하는 기법입니다. |
두번째로, Blind SQL Injection이 언제 사용되는지에 대해서 알아보도록 하겠습니다.
▶ Blind SQL Injection 사용될 때 1) 500번대 : 에러가 표시되지 않을 때 2) sql쿼리문이 삽입되는 입력값에 적절한 필터링이 이루어지지 않았을 때
|
다음으로는, Blind SQL Injection 이용하여 값을 찾아내는 방법입니다-!
▶ Blind SQL Injection을 이용한 공격 ① 'or 1=1 (참)과 'or 1=2#(거짓)을 넣어 참과 거짓의 값을 찾습니다. ② 함수를 이용하여 값을 찾아냅니다. 1) substr : 문자열, 문자를 찾아낼 수 있는 함수 => substr(문자열, 문자열에서 자르고자하는 문자열의 처음 위치, 자르고자 하는 문자길이) 2) length : 개수를 찾아낼 수 있는 함수 3) limit : 출력하고 싶은 행과 행의 갯수를 찾아낼 수 있는 함수 => limit (실행할 행의 번호, 실행할 행의 갯수) 또는 limit(실행할 행의 갯수) 4) ascii : 정수를 ascii코드로 반환하는 함수
|
마지막으로, Blind SQL Injection 해결방안입니다-!!
▶ 해결방안 : 특수문자를 필터링하는 것 입니다!!
1) url 인코딩 (%아스키코드사용) ex) Hello World를 %아스키코드로 바꿔서 URL을 출력해줍니다. 2) str_replace - 문자열 안에서의 위치를 기준으로 특정 부분의 문자를 치환(바꾸기)해줍니다. 3) htmlspecialchars - 특수 문자를 HTML 엔티티로 변환합니다. 더보기
![]() 4) mysql_real_escape_string - 특수 문자열을 이스케이프하여 필터링해줍니다. 5) preg_match -입력받은 문자열에 대해서 정규식 패턴이 존재하는지 안하는지 수행해줍니다. |
이상으로 Blind SQL Injection에 대해 알아보았습니다.
조금 이해가 되셨나요?ㅎㅎ
다음에는 더 알찬 지식보따리로 다시 찾아오겠습니다~~
안뇽~~~!!