DoR@Hee의 끄적끄적

mysql - information_schema 본문

취약점 진단/WEB

mysql - information_schema

DoR@Hee 2019. 3. 26. 10:15


1-1 information_schema란?

mysql은 데이터의 집합이다 데이터가 많아질 경우 데이터를 목록화 시킬 필요가 있는대 이러한 요구에 맞춰 생겨난 게 바로 

메타데이터 메타데이터는 데이터베이스와 같이 많은 데이터를 다뤄야 하는 경우 효율적인 정보처리를 위해 만든 것, 쉽게 말하자면 

정보에 대한 정보 mysql은 메타데이터들을 종류별로 묶어 테이블을 만들고 테이블을 모아 디비를 만들었는대

이러한 디비가 information_schema 이다. 이 DB는 읽기전용이라서  데이터베이스의 테이블과 같은 데이터로 동적으로 생성되므로

사용자가 직접 수정, 관여를 할 수 없다.


phpmyadmin에서 information_schema DB를 본 화면 총 78개 테이블이 보이는대 

이번 글에서 메인으로 볼 테이블은

1. SCHEMATA

2. TABLES

3.COLUMS

4.USER_PRIVILEGE


4가지 테이블을 중점적으로 보겠다.


1-1 information_schema.schemata




SCHEMA_NAME으로 DB들을 보여주는것을 확인 할 수있다.

위와 같은 명령으로는 show databases;가 있다.

일반적으로 취약점 진달을 할 경우 show 구문은 사용 안하니 "select * from information_schema.schemata"를 

사용해서 DB을 얻을 수 있다는것을 기억하자.


1-2 information_schema.tables





이 테이블은 TABLE_SCHEMA, TABLE_NAME을 중점적으로 봐야하는대


TABLE_SCHEMA는 DB를 의미하고

TABLE_NAME은 table이름을 의미한다.


TABLE_SCHEMA는 역시 show databases;와 동일하다

TABLE_NAME은 show tables; 와 동일한 명령이다.


information_schema.tables을 이용해서 DB이름 및 TABLE이름을 획득 할 수 있다.




1-3 information_schema.columns








TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME이 나온다.



1-4 information_schema.user_PRIVILEGES







 information_schema.user_PRIVILEGES는 user에 권한 및 user가 사용 할 수 있는 명령어 등을 나타 내는 테이블이다.


위 환경은 계정이 하나밖에 없기 때문에 1개 밖에 안보이지만 추가로 계정을 생성이 계정에 따른 권한을 확인 할 수 있다.






Comments