支持的五种注入
基于布尔的盲注,即可以根据返回页面判断条件真假的注入
基于时间的盲注,即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断。
基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中。
联合查询注入,可以使用union的情况下的注入。
堆查询注入,可以同时执行多条语句的执行时的注入。
sqlmap 使用
sql注入检测
GET、POST、COOKIE
GET
网址:http://4399.com?a=ichunqiu
命令:sqlmap.py -u “URL”
POST
POST数据:a:ichunqiu
命令:sqlmap.py -u "URL"空格–data=“POST数据”
cookie
命令:sqlmap.py -u "URL"空格–cookie= “Cookie数据”
sql注入基本流程
获取库名:sqlmap.py -u "URL"空格–current-db
获取库的表名:sqlmap.py -u “URL” --tables -D “数据库名”
获取库的表名的列名:sqlmap.py-u --columns -T “表名” -D “数据库名”
获取库的某表名的某列名的字段内容:原基础 --dump
sqlmap的命令
目标
-u 目标URL 例:sqlmap -u “www.abc.com/index.php?id=1”
-m 后接一个txt文件,文件中是多个url,sqlmap会自动化的检测其中的所有url。例:sqlmap -m target.txt
&emsp-r 可以将一个post请求方式的数据包(bp抓包)保存在一个txt中,sqlmap会通过post方式检测目标。例:sqlmap -r bp.txt
枚举
--current-db 获取数据库管理系统当前数据库
--tables 枚举DBMS数据库中的表
--columns 枚举DBMS数据库表列
-D 要进行枚举的指定数据库名
-T 要进行枚举的指定表名
-C 要进行枚举的指定列名
--dump 转储数据库表项,查询字段值
获得数据库相关信息
数据库类型:MIcrosoft SQL Server 、Mysql、Orcle、PostqreSQL
数据库结构 Microsoft Access : 库分三种表 Microsoft SQL Server 不同库不同表 3.Mysql:获取数据库使用参数:–current-db 获取用户名使用参数:–current-user
获取数据量和用户权限
1.语句:sqlmap.py -u “URL” --count -D “当前使用的数据库名”
2.判断用户权限:增删改查、写入读取文件、执行系统命令 使用参数 --privileges 查看用户的权限 sqlmap.py -u “URL” --privileges
延时注入
使用条件:页面无变化、布尔无真假、从来不报错->延时 使用方法: sqlmap.py -u “URL” --delay 时间 延时几秒 -safe-freq
交互式
sqlmap 进行提权 sqlmap.py -u “URL” --os-cmd=命令(注意使用交互式参数要知道网站绝对路径) 绝对路径:从盘符开始的路径,例如D:\www
命令=net user
tamper脚本利用介绍
Tamper脚本在sql目录下 语法:sqlmap.py -u “URL” --tamper=“脚本名字”
本地写入
sqlmap.py -u “URL” -file-write “本地文件的地址(路径)” --file-dest"目标文件的地址(路径)"
Options
-h, --help 查看帮助,没什么好说的
-hh 查看全部的帮助
--version 查看版本
-v 显示信息的级别,一共有六级:0:只显示python 错误和一些严重信息;1:显示基本信息(默认);2:显示debug信息;3:显示注入过程的payload;4:显示http请求包;5:显示http响应头;7:显示http相应页面。
Target
-d 直接连目标后端接数据库,而不是使用sql注入漏洞,直接通过目标的侦听端口连接,当然需要有目标数据库的账号名和密码。例:-d "mysql://user:password@192.168.75.128:3389/databasename" --dbs 查询非常快。
-u 指定一个url连接,url中必须有?xx=xx 才行(最常用的参数)例:-u "www.abc.com/index.php?id=1"
-l 后接一个log文件,可以是burp等的代理的log文件,之后sqlmap会扫描log中的所有记录。例: -l log.txt
-x 站点地图,提交给sql一个xml文件。
-m 后接一个txt文件,文件中是多个url,sqlmap会自动化的检测其中的所有url。例: -m target.txt
-r 可以将一个post请求方式的数据包保存在一个txt中,sqlmap会通过post方式检测目标。例: -r post.txt
-g 使用google引擎搜索类似的网址,并且多目标检测。例: -g "inurl:\".php?id=1\"" \是转义
-c 将使用的命令写在一个文件中,让sqlmap执行文件中的命令,我们可以用--save命令将配置写入文件。
Request
--method=METHOD 指定是get方法还是post方法。例: --method=GET --method=POST
--data=DATA 指明参数是哪些。例:-u "www.abc.com/index.php?id=1" --data="name=1&pass=2"
--param-del=PARA. 指明使用的变量分割符。例: -u "www.abc.com/index.php?id=1" --data="name=1;pass=2" --param-del=";"
--cookie=COOKIE 指定测试时使用的cookie,通常在一些需要登录的站点会使用。例: -u "www.abc.com/index.php?id=1" --cookie="a=1;b=2"
--cookie-del=COO.. 和前面的 --param-del=PARA. 类似,就是指明分割cookie的字符。
--load-cookies=L