sqlmap是一款开源的自动化SQL注入工具,可以帮助安全人员快速发现和利用SQL注入漏洞,它具有强大的功能和灵活的参数设置,可以支持多种数据库类型和注入方式。
(图片来源网络,侵删)1、基本使用
u:指定目标URL
data:指定POST数据
cookie:指定Cookie
level:指定测试等级(15,默认为1)
risk:指定风险等级(13,默认为1)
dbs:列出所有数据库
(图片来源网络,侵删)D:指定数据库名
T:指定数据表名
C:指定列名
N:指定数据包大小
tamper:指定自定义的HTTP请求头
threads:指定并发线程数
batch:以批处理模式运行
(图片来源网络,侵删)dump:导出数据到文件
osshell:获取操作系统权限
skipurlencode:跳过URL编码
randomizeagents:随机生成UserAgent
2、POST注入案例
假设目标URL为:http://example.com/login.php,需要提交用户名和密码进行登录,可以使用以下命令进行POST注入测试:
sqlmap u "http://example.com/login.php" data "username=test&password=test" level 5 risk 3 dbs
3、常用参数详解
level:指定测试等级,范围为15,数字越大,测试越详细,默认为1。
risk:指定风险等级,范围为13,数字越大,风险越高,默认为1。
dbs:列出所有数据库,如果目标网站有多个数据库,可以使用该参数进行查看。
D:指定数据库名,如果已经知道目标数据库名,可以直接使用该参数进行操作。
T:指定数据表名,如果已经知道目标数据表名,可以直接使用该参数进行操作。
C:指定列名,如果已经知道目标列名,可以直接使用该参数进行操作。
N:指定数据包大小,默认为50个字符,可以根据目标网站的响应速度进行调整。
tamper:指定自定义的HTTP请求头,可以使用该参数绕过一些简单的防注入措施。
threads:指定并发线程数,默认为1,可以根据目标网站的响应速度进行调整。
batch:以批处理模式运行,默认为False,设置为True时,sqlmap会自动处理多个URL,提高效率。
dump:导出数据到文件,可以将查询到的数据导出到文件中进行分析。
osshell:获取操作系统权限,如果成功获取到操作系统权限,可以使用该参数执行系统命令。
skipurlencode:跳过URL编码,默认为False,设置为True时,sqlmap不会对URL中的特殊字符进行编码。
randomizeagents:随机生成UserAgent,默认为False,设置为True时,sqlmap会随机生成UserAgent进行访问,降低被检测的风险。
下面是一个介绍,包含了一些SQLmap的常用指令和参数,以及一个POST注入的示例。
| 使用场景 | 指令和参数 | 说明 |
| 基础检测 | sqlmap u "http://example.com/vuln_page.php?id=1" | 检测目标URL上的SQL注入漏洞,参数为id |
| POST注入 | sqlmap u "http://example.com/vuln_page.php" data="param1=value1¶m2=value2" | 检测POST请求参数中的SQL注入漏洞 |
| 指定数据库 | dbms=MySQL | 指定目标数据库类型为MySQL |
| 检测所有参数 | paramexclude="session" | 检测所有参数,排除session参数 |
| 检测指定参数 | paramfilter="param1,param2" | 仅检测指定的参数param1和param2 |
| 检测延迟 | timesec=5 | 设置延迟响应的时间,单位为秒 |
| 检测等级 | level=3 | 设置检测等级(15),等级越高,检测越全面 |
| 获取数据库信息 | banner | 获取数据库版本和标题信息 |
| 获取所有数据库 | dbs | 列出所有数据库 |
| 获取当前数据库 | currentdb | 获取当前连接的数据库 |
| 获取表 | T "table_name" tables | 获取指定数据库中的所有表 |
| 获取列 | T "table_name" C "column1,column2" columns | 获取指定表中的列 |
| 获取数据 | T "table_name" C "column1,column2" dump | 获取指定表和列中的数据 |
| 用户权限 | isdba | 检测当前用户是否为数据库管理员 |
| 保存结果 | outputdir=/path/to/output | 将结果保存到指定目录 |
以下是POST注入的一个具体案例:
| 使用场景 | 指令和参数 | 说明 |
| POST注入 | sqlmap u "http://example.com/login.php" data="username=admin&password=pass" | 对username和password参数进行SQL注入测试 |
| 指定参数类型 | paramtype="json" | 如果POST数据是JSON格式,使用此参数 |
| 设置cookie | cookie="cookie_string" | 如果需要,设置发送请求的cookie |
| 设置UserAgent | useragent="Mozilla/5.0" | 设置HTTP请求的UserAgent头部 |
| 设置Referer | referer="http://example.com" | 设置HTTP请求的Referer头部 |
| 设置随机化参数 | randomize="param" | 随机化指定的参数值以绕过检测 |
| 设置延迟响应 | delay=1 | 设置每个请求之间的延迟时间,单位为秒 |
请注意,使用SQLmap时需要遵循法律和道德规范,不得用于非法入侵他人系统。
下一篇:cdn不隐藏ip_隐藏页面