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头中的各个部分
?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 ?优化
⚪-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
脱库
最后有个思维sqlmap的思维导图,请移步到个人网站下载www.xierunfa.top