잠깐 짬을 내서 질의 비용에 대해서 이야기 해보려고 한다. MSSQL, MySQL, ORACLE Blind SQL Injection(이하 Blind)을 할 때는 질의 비용을 생각하지 않을 수 없다. Blind는 특성상 1Byte 문자 획득에는 8번 질의 비용이 들어간다. 여기에는 순수 검색 비용(알고리즘)만 포함되어 있으며 네트워크 전송 속도와 DB의 처리 비용을 고려하지 않은 결과이다. 여러 포인트(표1)가 있는데 그 중 한 포인트의 비용을 줄이면 결국 자동화툴(SQL Injection tool) DB획득 시간이 줄어 들어 속도가 빨라지게 된다. 지금 이 칼럼을 통해서는 그 중 하나인 DB에서 처리 속도가 빠른 질의 문을 사용하여 비용을 줄이는 방법에 대해서 잠깐 이야기 해보려고 한다.


검색 알고리즘 네트워크 전송속도 웹서버 처리 비용 DB질의 비용
<표1. 검색 비용 조절 포인트>

MSSQL에서는 테이블을 획득하기 위해서는 sysobjects, information_schema를 가장 많이 알려지고 접하게 되는 시스템 테이블 또는 메타데이터(이하 메타데이터)이다. 둘 다 자동화 툴에서 동일 한 테이블과 칼럼 정보획득이 가능하다. 해당 메타데이터는 MSSQL에서 처리비용이 아래의 "2. MSSQL 질의 비용"에서의 결과와 같이 서로 상이하며 이 점을 이용하여 자동화 툴 개발 시에 시간을 단축 시킬 수 있다.



사용자 삽입 이미지
<표2. MSSQL 질의 비용>

다음은 표3 질의 결과 데이터 측정치로 5회 질의 요청을 하여 평균 값을 구한 결과이다. sysobjects가 information_schema보다 질의 회수가 증가함에 따라서 처리 비용이 수배가 차이가 있음을 확인 할 수 있다.

*  sysobject  information_schema
8  0.00936  0.02502
16  0.00936  0.04378
32  0.01560  0.07810
64  0.02188  0.15630
128  0.04378  0.31874
256  0.08124  0.63124
512  0.17190  1.23440
1024  0.34380  2.46566
<표3. MSSQL 질의 비용 - 시간>

결과론 적으로 128문자 획득비용(1024번 질의) sysobject일 경우 0.34초가 걸리며 information_schema 2.45초로 약 7배의 차이가 발생하였다. 2에서의 결과처럼 질의 횟수 증가에 따라 차이는 더욱 많이 나게 된다. 물론 해당 환경은 최적의 환경으로 실제 인터넷 환경과는 다소 차이가 많으나 가시적인 차이가 나타남은 확실하다.

이러한 처리 비용을 절약하면 적은 시간에 보다 많은 데이터 획득이 가능하다.



* 테스트 환경
VMWARE에 MSSQL 2000, IIS로 테시트를 수행하였으며 ASP로 FOR문과 timer()함수를 이용하여 측정하였다.

- sysobjects 질의어
  select top 1 ascii(substring(name,1,1)) from
  (select top 1 name from sysobjects where xtype=0x55 order by name desc)n3015m
  order by name

- information_schema 질의어
  select top 1 ascii(substring(table_name,1,1)) from
  (select top 1 table_name from information_schema.tables order by table_name desc)n3015m
  order by table_name
Posted by n3015m
:
BLOG main image
'네오이즘'의 보안LAB 블로그입니다........... n3oism@gmail.com by n3015m

카테고리

분류 전체보기 (228)
[ HappyDevTool ] (29)
[ HappyToolRelease ] (4)
[Book] (6)
[ Security Studies ] (0)
- CII (2)
- BigData (2)
- Web Hacking (10)
- SQL Injection (25)
- Mobile Security (9)
- Network (6)
- OperatingSystem (4)
- Malware & Reversing (4)
- Phishing (5)
- Compliance (0)
- Programming (13)
- Tools (13)
- IoT (6)
- etc (21)
[Pentration Testing] (3)
[OS X] (4)
[ Security Trends ] (16)
[ Fixing Guideline ] (7)
My Way, My Life (34)
About Me (2)

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

Total :
Today : Yesterday :