이번 글에서는 웹해킹.kr 2번 문제를 풀면서 Blind Sql Injection에 대해 알아보려고 합니다.
Blind Sql Injection은 성공한다면 디비명, 테이블 명, 컬럼 명, 컬럼에 들어있는 데이터까지 훔칠 수 있는 취약점인데요
그러나 데이터 베이스 전체 데이터를 빼갈 수 있는 강력한 정보노출 취약점입니다만, 이 공격에는 단점이 하나 있습니다.
그것은 바로 지속적으로 sql 쿼리를 전송하여 데이터를 수집해야한다는 단점입니다.
이 웹 해킹 공격을 잘 모르시는 분들은 아마 이렇게 생각하실 겁니다.
'무슨 점 때문에 지속적으로 쿼리를 날려야하는 것일까?' 글로 설명드리는 것은 이해가 안될 수 있으니
웹 해킹 2번 문제를 풀면서 어떤 점이 단점인지 알아보도록 하죠.
웹 해킹 2번 문제에 들어가게 되면, 위와 같은 메세지만 나오게 됩니다.
이전 글인 웹 해킹 1번 문제에서 쿠키가 공격 경로로 사용될 수 있다고 말했었습니다.
이번 문제에서도 쿠키를 사용할 것인데요. 공격 방법은 오늘의 주제와 같이 Blind Sql Injection입니다.
먼저 일반적인 응답 값을 위와 같습니다.
어떠한 차이가 있는지 알기 위해 유심히 봐주세요.
그리고 쿠키 값 중에 time이라는 값 뒤에 and 1=1을 입력해서 전송해 보았습니다.
그 결과 응답 값은 위와 같습니다. 어떤 점이 바뀌었는지 보이시나요?
정답은 주석으로 처리되어 있는 날짜 부분이 변경되었다는 점 입니다.
이러한 결과로 우리는 Sql 쿼리문을 전송해서 결과적으로 데이터 베이스의 정보를 가져올 수 있습니다.
단순히 날짜 값이 바뀐 것으로 어떻게 데이터베이스 전체를 가져올 수 있다는 것 일까요?
위의 결과 값은 마지막 time 값에 and 1=2를 입력하여 얻은 값입니다.
두 사진의 차이는 주석 처리된 시간 중 마지막 값이 0이냐, 1이냐의 차이밖에 없는데요.
이 결과로 우리는 서버에게 아래와 같은 질문을 할 수 있습니다.
DB 갯수가 몇개니?, DB의 이름은 무엇이니?, 테이블 명은? 컬럼 갯수는? 컬럼 명은?
이러한 것들이 어떻게 가능한걸까요?
SQL 쿼리를 입력하여 DB 갯수가 2개니? 라는 질문에 1 이라는 응답이 온다면 '그렇다' 라는 뜻이니
우리는 이러한 질문들을 계속해서 전송하여 전체 DB 데이터를 알 수 있는 것입니다.
너무 글이 길어졌네요. Blind Sql Injection에 대해서는 이것만 기억하세요.
취약점에 노출될 경우 데이터베이스 전체가 노출될 수 있는 심각한 취약점이다.
그러나 지속적으로 SQL쿼리를 요청해야하는 단점이 있다.
'해킹' 카테고리의 다른 글
내가 정부24, 홈텍스를 해킹 하는 이유 (0) | 2020.04.17 |
---|---|
무료로 AWS를 이용해 해킹 서버를 구축해보자! (0) | 2020.04.14 |
웹 쿠키가 공격 경로로 사용될 수 있다니?! 웹 해킹 1번 문제 풀이 (0) | 2020.04.12 |
웹 해킹을 시작합니다! 웹 해킹 툴 burp suite 다운로드 및 사용법 (3) | 2020.04.11 |
모의해킹과 보안관제 업무상 차이점 (0) | 2020.04.10 |