# SQLMap ## Giới thiệu 1. SQLMap là một công cụ mã nguồn mở vô cùng mạnh mẽ và có sẵn trên Kali: ``` sudo apt install sqlmap ``` 2. SQLMap là công cụ khai thác những lổ hỏng của cơ sở dữ liệu SQL. Công cụ này được xem là công cụ khai thác SQL tốt nhất hiện nay. Cụ thể khi test SQLi việc gây ra lỗi `500 Internal Server Error` là không thể tránh khỏi, việc liên tục gây ra lỗi trên sẽ gây sự chú ý dẫn đến việc lỗi sẽ được fix và chúng ta không thể tiếp tục ` kiểm thử và xâm nhập` ## Tính năng 1. Hỗ trợ đầy đủ làm việc với các hệ quản trị cơ sở dữ liệu MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird, Sybase, SAP MaxDB, Informix, MariaDB, MemSQL, TiDB, CockroachDB, ... 2. Hỗ trợ đầy đủ cho các kỹ thuật tấn công SQL Injection: boolean-based blind, time-based blind, error-based, UNION query-based, stacked queries và out-of-band 3. Liệt kê người dùng, password hash, đặc quyền, vai trò, cơ sở dữ liệu, bảng và cột. 4. Tìm kiếm tên cơ sở dữ liệu cụ thể, các bảng cụ thể trên tất cả các cơ sở dữ liệu hoặc các cột cụ thể trên tất cả các bảng của cơ sở dữ liệu 5. Thực hiện các lệnh tùy ý và truy xuất đầu ra tiêu chuẩn của chúng trên máy chủ cơ sở dữ liệu bên dưới hệ điều hành khi phần mềm cơ sở dữ liệu là MySQL, PostgreQuery hoặc Microsoft SQL Server ## Tiến hành khai thác * Bước 1: Kiểm tra xem có bị SQLi hay không ``` sqlmap -u "URL cần khai thác" ``` * Bước 2: Liệt kê các database mà web sử dụng ``` sql -u "URL cần khai thác" -dbs ``` hoặc có thể dùng extension: `wappalyzer` Trong đó: dbs là option để liệt kê các cơ sở dữ liệu của website * Bước 3: Xác định tên bảng trong database ``` sql -u "URL cần khai thác" --tables -D ``` Trong đó: ` -table` : để liệt kê tất cả các bảng có trong cơ sở dữ liệu `-D`: tên cơ sở dữ liệu cần liệt kê bảng Ví dụ: > sqlmap –u “URL cần khai thác” --tables –D my_zerocoolhf Giả sử ta đã liệt kê được 2 database là my_zerocoolhf và infomation_schema `-D my_zerocoolhf` : báo cho sqlmap biết chương trình sẽ làm việc với database my_zerocoolhf `--table` : dùng để liệt kê các bảng trong database my_zerocoolhf * Bước 4: Xác định tên cột trong bảng ``` sqlmap -u "URL cần khai thác" --columns -D "tên bảng" -T users ``` Trong đó: `--columns` : dùng để liệt kê các cột trong bảng `-D` : tên bảng `-T` : tên bảng cần liệt kê các cột * Bước 5: Trích xuất dữ liệu ``` sqlmap -u "URL cần khai thác" --dump -D "tên bảng" -T users` ``` Trong đó: `--dump` : dùng để dump toàn bộ dữ liệu của bảng `users` của T ## Áp dụng 1. Lab PostSwigger 2. Lab Tryhackme Nguồn mình tham khảo: > https://viblo.asia/p/su-dung-sqlmap-de-khai-thac-lo-hong-sql-injection-sqli-6J3ZgzVAKmB > >https://whitehat.vn/threads/huong-dan-su-dung-sqlmap-de-khai-thac-sql-injection.8343/ > >https://github.com/sqlmapproject/sqlmap/wiki/Usage > > WriteUp anh Thiên :love_letter: