[OSCP]SQL Injection Attacks - SQL Theory and Databases (mysql)

반응형

기본 상호작용


mysql 명령을 사용하면 사용자 이름과 비밀번호에 root를 지정하고 기본 MySQL 서버 포트 3306을 지정하여 원격 SQL 인스턴스에 연결

kali@kali:~$ mysql -u root -p'root' -h 192.168.50.16 -P 3306

 

MySQL 콘솔 셸에서 version() 함수를 실행하면 실행 중인 SQL 인스턴스의 버전을 검색할 수 있다.

MySQL [(none)]> select version();
+-----------+
| version() |
+-----------+
| 8.0.21    |
+-----------+
1 row in set (0.107 sec)

 

system_user() 함수를 통해 현재 세션의 현재 데이터베이스 사용자를 확인

MySQL [(none)]> select system_user();
+--------------------+
| system_user()      |
+--------------------+
| root@192.168.20.50 |
+--------------------+
1 row in set (0.104 sec)

 이 함수는 MySQL 연결에 대한 현재 사용자 이름과 호스트 이름을 반환

 

 databases 키워드를 실행하여 MySQL 세션에서 실행 중인 모든 데이터베이스 목록을 수집

MySQL [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test               |
+--------------------+
5 rows in set (0.107 sec)

사용 가능한 모든 데이터베이스 나열이 가능함을 확인

 

MySQL 데이터베이스 에 있는 offsec 사용자 의 비밀번호를 검색해 보자

MySQL 데이터베이스 내에서, 우리는 user 테이블 에 속하는 user 와 authentication_string 값 에 대한 SELECT 문을 사용하여 필터링하고 그 다음, 우리는 offsec 사용자 와만 일치하는 WHERE 절을 통해 모든 결과를 필터링해보자

MySQL [mysql]> SELECT user, authentication_string FROM mysql.user WHERE user = 'offsec';
+--------+------------------------------------------------------------------------+
| user   | authentication_string                                                  |
+--------+------------------------------------------------------------------------+
| offsec | $A$005$?qvorPp8#lTKH1j54xuw4C5VsXe5IAa1cFUYdQMiBxQVEzZG9XWd/e6|
+--------+------------------------------------------------------------------------+
1 row in set (0.106 sec)

보안을 강화하기 위해 사용자의 비밀번호는 caching-sha-256 알고리즘으로 authentication_string 필드에 저장된다

 

반응형

Designed by JB FACTORY