🙋🏽‍♂️sqlmap的使用 🧪 🎯

1️⃣sqlmap简介🤖🐳

> sqlmap是一个自动化的SQL注入工具,其主要功能是扫描,发现并利用给定的URL的SQL注入漏洞,日前支持的数据库是MS-SQL,,MYSQL,ORACLE,POSTGRESQL,DB2,SQLlite,FIrebird。SQLMAP采用四种独特的SQL注入技术,分别是盲推理SQL注入,UNION查询SQL注入,堆查询和基于时间的SQL盲注入。其广泛的功能和选项包括数据库指纹,枚举,数据库提取,访问目标文件系统,并在获取完全操作权限时实行任意命令。sqlmap的功能强大到让你惊叹,常规注入工具不能绕过的话,终极使用sqlmap会有意想不到的效果。

2️⃣五种注入模式🧪🧪


3️⃣使用🥘🦸‍♂️

3.1⚫观察数据

  • -v:参数,一共有一个等级,默认为1
    • v 0 只显示错误信息和严重错误信息
    • v 1 同时显示信息和警告
    • -v 2 同时显示debug的信息
    • -v 3 同时显示注入的playload
    • -v 4 同时显示http请求
    • -v 5 同时显示http响应头
    • -v 6 同时显示http响应页面

3.2⚫ 获取目标方式🦸‍♂️

  ⚪直接连接数据库💼:-d 实例:sqlmap -d "mysql://user:passwd@192.168.1.1:3306/testdb" -f --banner --dbs --users

  ⚪目标URL🙋🏽‍♂️:-u / –ur 实例:sqlmap -u "http://www.target.com/index.php?id=1*" -f --banner --dbs --users “*”标记注入点在此,–bannner 显示banner信息 –dbs 读取数据库,–users读取数据库中的users表

  ⚪从Burp或者Webscarab代理中获取日志🧳:-l 把burp中的日志直接导出来给sqlmap检测,不过在burp可以直接安装sqlmap的插件。

  ⚪多扫描目标扫描🐤:-m 将url保存在一个文本中,sqlmap遍历扫描。

  ⚪从文件中加载http请求🌳:-r,将burp中的包导出成文件然后导出.然后使用sqlmap进行扫描注入

  ⚪-c 🧛🏽‍♂️加载sqlmap.conf文件里的相关配置,在sqlmap里面可以设置各种数据


3.3⚫获取目标方式🎯

  ⚪提交http数据 参数--data 此参数是将数据以post的方式进行提交,sqlmap会像检测get参数一样检测post的参数实例:sqlmap -u "http://www.taget.com./index.php*" --data="id=1" -f --banner --dbs --users

  ⚪参数拆分字符:--param-del 当post,get提交多个参数时可以用到
实例:sqlmap -u "http://www.target.com/index.php" --data="query=footbal;id=1" --param-del=";" -f --bannner --dbs --users

  ⚪HTTP cookie头:--cookie,--load-cookies,--drop-set-cookie当web应用需要登录时候可以添加cookie来进行登录,cookie可以使用抓包或者浏览器插件来获取.

  ⚪HTTP User-agent头 --user-agent,--random-agent :一般当同一个浏览器用户发起大量数据包时可能被waf之类的防御设备给拦截因此使用随机客户端头可能避免.–random-agent是从./txt/user-agent.txt中获取.当–level参数设置为3或者3以上时,会尝试对user-agnet进行注入.

  ⚪HTTP host,referer头,额外的http头--referer,--host,--headers就可以来手动设置http头中的各个部分

  :red_circle:http认证保护:--auth-type,--auth-cred http认证保护中有三种方式:BASIC,DIGEST,NTLM.实例:sqlmap -u “http://www.target.com/index.php?id=1” –auth-type Basic “user:password”

  ⚪使用代理--proxy,--proxy-cred,ignore-proxy

  ⚪使用洋葱匿名 --tor

  ⚪避免过多错误请求被屏蔽--safe-url,--safe-freq


3.4⚫优化

  ⚪ 收集优化-o:用来隐式的设置等价于选项:--keep-alive,--null-connective,--threads=3共同作用

  ⚪输出预测--predict-output用于推测算法顺序检测的值的字符统计预测

  ⚪HTTP活动 --keep-alive将http请求设置为持久型链接

  ⚪HTTP空连接--null-connection可以在盲目注入技术来区分TRUE和False

  ⚪设置并发连接数 --threads


3.5⚫探测

  ⚪测试参数:-p,--skip当使用的level等级较高又有些参数不想测试,则可以使用此参数跳过

  ⚪指定数据库--dbs

  ⚪指定风险等级--risk,共有四个等级,每增加一个等级都会增加测试的语句

  ⚪页面比较--string,--not-string,-regexp,--code


3.5⚫注入技术

  ⚪测试是否是注入--technique

  • B:布尔注入类型(只返回真假类型的注入)
  • E:报错型注入(根据错误信息类型的注入)
  • U:union联合查询注入
  • S:对查询注入
  • T:基于时间延迟的注入

  ⚪ 设定注入的延迟时间--time-sec默认是5秒

  ⚪设定union查询字段数 --union-cols 默认情况下sqlmap测试union查询注入1-10个字段的数,当level是5的时候回增加到50个字段

  ⚪设定union查询使用的字符union-char

  ⚪DNS泄露攻击--dns-domain:如果用户是控制一台机器注册为dns与服务器则可以打开此选项


3.6⚫指纹信息

  ⚪ -f --fingerprint获取指纹信息

3.4 :red_circle:优化

  ⚪-b ,--banner 返回数据库系统当前的版本号(主要是调用version()或者@@version,这是根据数据库的不同而定的)

  ⚪--current-user 获取当前管理数据库的内容

  ⚪--current-db 获取当前管理数据库名称

  ⚪--is-dba 判断是否是管理

  ⚪--users 当前用户有权限读取包含所有用户的表的全显示,就可以列出所有管理用户.

  ⚪--passwords 列出并破解数据库用户的hash(仅当当前用户有权限读取包含密码的权限时才生效)

  ⚪---dbs列出数据库中的所有表

  ⚪----tables --exlude-sysdbs -D 列出数据库中所有的表,排除sysdbs

  ⚪--columns -C -T -D列出当前表的列

  ⚪--schema 列出数据库的架构

  ⚪--dump -C -T -D --start --stop --first --last获取整个表的数据

  ⚪dump-all 脱库

发表评论

电子邮件地址不会被公开。