测试工具-sqlmap

直连数据库

sqlmap支持直连,通过以下命令来直连。
1、服务型数据库:mysql,oracle,sqlserver,postgresql等
服务型数据库(前提知道数据库用户名和密码):

DBMS://USER:PASSWORD@DBMS_IP:DBMS_PORT/DATABASE_NAME   

mysql数据库root账户默认不支持外链,参考文档:https://qa.1r1g.com/sf/ask/3435601921/
2、文件型数据库:sqlite,access,firebird等
文件型数据库(前提知道数据库绝对路径):

DBMS://DATABASE_FILEPATH     

sqlmap获取目标

单一url探测

参数使用 -u 或 --url
URL格式:http(s)😕/targeturl[:port]/[…]
例如:sqlmap -u “http://192.168.3.3/sqlilabs/Less-1/?id=1” --banner
在这里插入图片描述

读取目标进行sql注入探测

sqlmap支持从不同类型文件中读取目标进行sql注入探测。
1、-l 从Burpsuite proxy 或 WebScarab proxy中读取http请求日志文件。
2、-x 从sitemap.xml站点地图文件中读取目标探测。
3、-m 从多行文本格式文件读取多个目标,对多个目标进行探测。
4、-r 从文本文件中读取http请求作为sql注入探测的目标。
5、-c 从配置文件 sql.conf中读取目标探测。

sqlmap设置请求参数

sqlmap 设置http请求方法

sqlmap会自动在探测过程中使用合适的http请求方法。但是在某些具体情况下,需要强制使用具体的http请求方法。例如put 请求方法。http put请求方法不会自动使用,因此我们需要强制使用

--method=put

默认情况下,用于执行http请求的http方法是get,但是可以通过提供在post请求中发送的数据隐藏式地将其更改为post。这些数据作为这些参数,被用于sql注入检测。当然,–mothod也可以强制修改。

python sqlmap.py -u "http://localhost/sqlilabs/Less-2/index.php" --data="id=1" -f --banner --dbs --users

-f fingerprint 指纹

sqlmap设置参数分隔符

在某些情况下,sqlmap需要覆盖默认参数分隔符(例如& in GET和POST数据),才能正确地分割和单独处理每个参数。

python sqlmap.py -u "http://localhost/sqlilabs/Less-11/index.php" --data="query=foobar;id=1" --param-del=";" -f --banner --dbs --users

sqlmap设置cookie头

sqlmap中用来设置cookie的参数:–cookie,–cookie-del,–load-cookies --drop-set-cookie
使用场景:1、web应用程序具有基于cookie验证的过程;2、想利用cookie值上的sql注入漏洞。
sqlmap使用cookie过程:1、登录或浏览页面;2、打开审计工具或者代理截断,复制cookie;3、在sqlmap中使用 --cookie粘贴cookie;

cookie验证,指向cookie

python sqlmap.py -u "http://localhost/DVWA/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie "PHPSESSID=ngogkm5l9njs6j7vrrtunm5me5; security=low"--banner

如果在通信过程中,web应用程序使用Set-Cookie标头进行响应,sqlmap将在所有进一步的http请求中自动使用其值作为cookie标头。sqlmap还将为sql注入自动测试这些值。这可以通过提供–drop-set-cookie——sqlmap将忽略任何即将到来的Set-Cookie头来避免。
反之亦然,如果提供了一个带有选项的HTTP Cookie报头——cookie和目标URL在任何时候发送一个HTTP set-Cookie报头,sqlmap将询问您要为以下http请求使用哪组Cookie。
load-cookie,可以用来提供包含Netscape/wget格式的cookie的特殊文件。

注意:如果需要对HTTP Cookie值进行sql注入探测,需要设置 --level 2 以上(3)。

sqlmap.py -u "******" --level 2 

sqlmap设置user-agent

默认情况下,sqlmap使用以下用户代理头值执行http请求:sqlmap/1.0-dev-xxxxxxx(http://sqlmap.org)
然而,通过提议自定义用户代理作为选项的参数,可以使用选项——user-agent来伪造它。
此外,通过 --random-agent,sqlmap将从./txt/user-agent中随机选择一个用于会话中的所有http请求。一些站点在服务端检测http user-agent值,如果不是一个合法的值,就会中断链接。同时sqlmap也会报错。

同时也可以指定user-agent

python sqlmap -u "http://localhost/sqllll/?id=1" --user-agent="Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36" --banner

注意针对User-Agent的值探测SQL注入,需要设置–level 值为3。

python sqlmap.py -r target.txt --level 3

sqlmap设置Host头

可以手动设置HTTP主机头值。默认情况下,从提供的目标URL解析HTTP主机头。
注意,如果 --level设置为5,将对HTTP主机头进行sql注入检测。

python sqlmap.py -r target.txt --level 5

sqlmap设置Referer头

伪造HTTP Referer值是可能的。默认情况下,如果没有显式设置,HTTP请求中不会发送HTTP引用头。

请注意,如果–level设置为3或以上,将针对HTTP引用头进行sql注入测试。

sqlmap -r target.txt --level 3

sqlmap设置额外HTTP头

通过设置选项–header,可以提供额外的HTTP标头。每个标头必须用换行符分隔,从配置INI文件中提供它们要容易得多。可以查看示例sqlmap.conf文件。

python sqlmap.py -u "http://192.168.21.128/sqlmap/mysql/get_int.php?id=1" --headers="Host:www.target.com\nUser-Agent:Firefox 1.0" -v 5

sqlmap.conf
在这里插入图片描述
测试案例:

python sqlmap.py -u "http://localhost/sqlilabs/Less-1/?id=1" --header="User-Agent:HAHA\nCookie:123456" --banner

在这里插入图片描述
注意此案例中使用得是–header,只能设置一个头(-H也可达到同效,-H是缩写),若要指定多个头部需要用–headers

python sqlmap.py -u "http://localhost/sqlilabs/Less-1/?id=1" --headers="User-Agent:HAHA\nCookie:123456" --banner

在这里插入图片描述

sqlmap设置http协议认证

sqlmap中设置HTTP协议认证得参数:–auth-type和–auth-cred
其中–auth-type支持 Basic、Digest、NTLM
–auth-cred认证语法为:username:password
例如:
在这里插入图片描述

python sqlmap.py -u "http://url/arit.php?id=1" --auth-type Basic --auth-cred "testuser:testpass"

sqlmap设置HTTP代理

sqlmap中设置代理的参数:–proxy,–proxy-cred,–proxy-file,–ignore-proxy
其中–proxy用来设置http代理服务器位置——格式:–proxy http(s)😕/ip[:端口]
若代理服务器需要账号密码。–proxy-cred用来设置HTTP代理服务器认证信息——格式:–proxy-cred username:password
–proxy-file用来设置多条代理在文件中
–ignore-proxy当您希望通过忽略系统范围内的HTTP(S)代理服务器设置来针对本地网络的目标部分运行sqlmap时,应该使用这种方法。

sqlmap设置Tor隐藏网络地址

sqlmap中设置Tor网络的参数:–tor,–tor-port,–tor-type --check-tor
在这里插入图片描述
初次使用需要安装tor
在这里插入图片描述
开启tor服务及查看状态
在这里插入图片描述
tor有四种类型
在这里插入图片描述
开始检测
在这里插入图片描述

sqlmap设置延迟

sqlmap探测过程中会发送大量探测Payload到目标,如果默认情况过快的发包速度会导致预警。为了避免这样的情况发生,可以在探测设置sqlmap发包延迟。默认情况下,不设置延迟。
–delay 0.5 设置延迟0.5秒

python sqlmap.py -u "http://localhost/sqlilabs/Less-1/?id=1" --delay 0.5 --banner

sqlmap设置超时

在考虑超时HTTP(S)请求之前,可以指定等待的秒数。有效值是一个浮点数,例如10.5表示10秒半。默认设置为30秒。(发送请求后,在这段超时时间外服务器无响应,则判定目标不存在或关机,从而跳出执行过程)。
例如:–timeout 10.5

python sqlmap.py -u "http://www.abc123sss.com/index.php?id=1" --timeout 10.5 --banner

在这里插入图片描述

sqlmap设置重试次数

在请求超时后,sqlmap会尝试重新连接。
sqlmap中设置重试次数 --retries count 设置对重试次数,默认情况下重试3次。
在这里插入图片描述

sqlmap设置随机化参数

在对单一url当中的指定参数进行探测,如果只针对这个参数的固定值探测,那么这个时候服务器抓到的数据包会分析得只对这个参数值进行重复大量发送payload,很容易被发现。
sqlmap可以指定要在每次请求期间随机更改其值的参数名称。长度和类型根据提供的原始值保持一致。
–randomize 参数名称
在这里插入图片描述

sqlmap设置日志过滤目标

与使用选项-l使用从提供的日志解析的所有主机不同,可以指定有效的python正则表达式,过滤所需的日志。
–scope

python sqlmap.py -l burp.log --scope="(www)?\.target\.(com|net|org)"

–skip-urlencode 不进行url加密。特殊符号会被url加密,某些服务端不遵循这个规则,就要用到这个参数。

sqlmap设置忽略401

–ignore-401 参数用来忽略未验证错误。
如果你想测试偶尔返回HTTP错误401(未经授权)的站点,而你想忽略它并在不提供适当凭证的情况下继续测试,可以使用–ignore-401
在这里插入图片描述

sqlmap设置HTTP协议私钥

当web服务器需要适当的客户端证书和用于身份验证的私钥时,应该 使用此选项。提供的值应该是一个PEM格式的key_file,其中包含证书和私钥。
–auth-file文件名

sqlmap设置安全模式

避免在多次请求失败后摧毁会话。
有时,如果执行了一定数量不成功的请求,则再次期间的web应用程序或检查技术会销毁会话。这可能发生在sqlmap的检测阶段或利用任何盲sql注入类型时。原因时sql有效负载不一定返回输出,因此可能会向应用程序会话管理或检查技术发出信号。
–safe-url,–safe-post,–safe-req,–safe-freq
通过这种方式,sqlmap将访问每个预定义数量的请求,而不对某个安全URL执行任何类型的注入。

sqlmap设置忽略URL编码

据参数的位置(例如GET),默认情况下它的值可以时URL编码的。在某些情况下,后端web服务器不遵循RFC标准,需要以原始的非编码形式发送值。在这种情况下使用 --skip-urlencode。
–skip-urlencode 不进行url编码。

sqlmap性能优化

sqlmap设置持久HTTP连接

sqlmap中可以设置连接未持久连接。HTTP报文中设置Connection:keep-Alive。减少连接次数,一定程度上减轻服务器负担。
参数:–keep-alive
在这里插入图片描述
–current-db 探测当前数据库
在这里插入图片描述

sqlmap设置不接收HTTP Body

sqlmap中设置空连接,表示不接受HTTP当中的Body。常用在盲注过程中。
参数:–null-connection
在这里插入图片描述
head方式请求,不接收响应的body
在这里插入图片描述

sqlmap设置多线程

sqlmap中设置同时发送多少个HTTP请求的多线程。
–thread默认是3个多线程。为了不影响目标站点服务器的性能,sqlmap可以设置最大的线程数为10。
在这里插入图片描述

sqlmap设置预测输出

sqlmap中的预测输出,在推理算法中用于检索值字符的顺序统计预测。
参数:–predict-output
在这里插入图片描述

注意这个参数与 --thread 参数不兼容。

sqlmap指定位置注入

sqlmap注入介绍

所谓sql注入,就是通过把sql命令插入到web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的sql命令。具体来说,它是利用现有应用程序,将(恶意的)sql命令注入到后台数据库引擎执行的能力,它可以通过在web表单中输入(恶意)sql语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行sql语句。
由此可见:sql注入发生位置——HTTP数据包中任意位置。

sqlmap设置指定注入参数

-p,–skip,–param-exclude --skip-static
-p:指定具体探测的参数。例如:-p “id,user-agent”在这里插入图片描述
若不指定参数,sqlmap会根据url中存在的参数依次探测。
将payload添加到user-agent中
在这里插入图片描述

-skip:忽略探测具体的参数(不想探测的报文头)。例如:–level (1-5)–skip “user-agent,referer”
–param-exclude:忽略包含具体内容的参数。例如:–param-exclude="token|session"不对包含token或session的参数进行探测。
–skip-static:忽略非动态参数

sqlmap设置URI注入位置

当注入点位于URI本身内部时,会出现一些特殊情况。除非手动指向URI路径,否则sqlmap不会对URI路径执行任何自动测试。必须在命令行中添加星号(*)来指定这些注入点。
例如:当使用Apache web服务器的mod_rewrite模块或其他类似的技术时,这就显得特别有用了。

python sqlmap.py -u "http://targeturl/param1/value1*/param2/value2/"
# 此处value为注入点

在这里插入图片描述
指向多个参数
在这里插入图片描述

sqlmap设置任意注入位置

与URI注入点类似,星号(*)(注意:这里也支持Havij样式%INJECT%)也可以用来指向GET、POST或HTTP头中的任意注入点。注入点可以通过在带有选项-u的GET参数值、带有选项-l -r的POST参数值、带有选项-H的HTTP头值、带有选项头、用户代理、引用和/或cookie的HTTP头值中指定,或者在带有选项-r的文件中加载的HTTP请求的通用位置指定。
在这里插入图片描述
在这里插入图片描述

sqlmap注入参数

sqlmap强制设置DBMS

默认情况下sqlmap会自动识别探测目标web应用程序的后端数据库管理系统(DBMS),以下列出sqlmap完全支持的DBMS种类。
Mysql、Oracle、Microsoft SQL Server、IBM DB2、SQLite、Firebird、Firebird、Firebird、Sybase、SAP MaxDB、HSQLDB、Informix。
指定数据库探测,能够加快探测速度:–dbms 数据库管理系统名称[版本号],例如:–dbms mysql 5.0、–dbms microsoft sql server 05
在这里插入图片描述

sqlmap强制设置OS系统

默认情况下sqlmap会自动识别探测目标web应用程序的后端操作系统(OS),以下列出sqlmap完全支持的OS种类。Linux、Windows
例如: --os windows 或 --os linux ——指定了操作系统会更加高效。
在这里插入图片描述
请注意,此选项不是强制性的,强烈建议只在完全确定底层操作系统的后端数据库管理系统时才使用它。如果不知道它,让sqlmap自动为您识别它

sqlmap关闭负载转化机制

在检索结果时,sqlmap使用一个机制,在这种机制中,所有条目都被转换为字符串类型,并在NULL值的情况下用空格字符替换。这样做是为了防止出现任何错误状态(例如,将空值与字符串值连接起来),并简化数据检索过程本身。尽管如此,还是有报告的案例(例如MySQL DBMS的旧版本)由于数据检索本身的问题(例如没有返回值)需要关闭这种机制(使用此开关)。 --no-cast

sqlmap关闭字符转义机制

在sqlmap需要在有效负载中使用(单引号分隔)字符串值(例如,选择‘foobar’)时,这些值将自动转义(例如,选择CHAR(102)+CHAR(111)+CHAR(111)+CHAR(98)+CHAR(97)+CHAR(114))。这样做的原因有两个:混淆有效负载内容和防止后端服务器查询转义机制(例如magic_quotes和/或mysql_real_escape_string)的潜在问题。用户可以使用这个开关关闭它(例如减少有效负载大小)。 --no-escape

sqlmap强制设置无效值替换

在sqlmap需要使原始参数无效(例如id=13)时,它使用经典的否定(例如id=-13).有了这个开关,就可以强制使用大量整数数值来实现相同的目标(例如id=99999999999999)。 --invalid-bignum
在这里插入图片描述
在sqlmap需要使原始参数无效(例如id=13)时,它使用经典的否定(例如id=-13).有了这个开关,就可以强制使用布尔操作来实现相同的目标(例如id=13 and 18=19)。 --invalid-logical

在sqlmap需要使原始参数无效(例如id=13)时,它使用经典的否定(例如id=-13).有了这个开关,就可以强制使用随机字符串来实现相同的目标(例如id=asdasdff)。 --invalid-string

sqlmap自定义注入负载位置

在某些情况下, 只有当用户提供要附加到注入负载的特定后缀时,易受攻击的参数才可被利用。当用户已经知道查询语法并希望通过直接提供注入有效负载前缀和后缀来检测和利用sql注入时,这些选项就派上用场了。
–prefix 设置sql注入payload前缀
–suffix 设置sql注入payload后缀
在这里插入图片描述
为了实现闭合

例子:
在这里插入图片描述
在这里插入图片描述

sqlmap设置Tamper脚本

sqlmap本身不会混淆发送的有效负载,除了单引号之间的字符串被CHAR()类似的表示形式所取代之外。sqlmap通过Tamper脚本来绕过WAF等防御措施。可以在tamper文件夹下找到所有sqlmap自带的tamper脚本。
在这里插入图片描述
在这里插入图片描述

sqlmap设置DBMS认证

设置DBMS认证方式通过以下命令:–dbms-cred=username:password
在这里插入图片描述

sqlmap自定义检测参数

sqlmap设置探测等级

–level 此选项需要指定要执行的测试等级参数。有五个层次,在执行有限数量的测试(请求)时,默认值为1。1~5探测复杂逐步提升。
sqlmap使用的有效负载在文本文件xml/payload.xml中指定。按照文件顶部的说明,如果sqlmap错过了注入,您也应该能够添加自己的有效负载来进行测试!
这个选项不仅会影响到哪个有效负载sqlmap尝试,还会影响到在探测中取哪个注入点:GET和POST参数总是被测试,HTTP Cookie头值从第2级测试,HTTP用户代理/引用头值从第3级测试。
总之,检测SQL注入越困难,必须设置的——级别就越高。
在显示无法探测时,可以设置 --level 5来进行更清大的探测。

sqlmap设置页面比较参数

此选项需要指定执行测试的风险参数。有三个风险值。默认为1,这对于大多数sql注入点来说是无害的。风险值2增加了大量基于查询时间的sql注入测试的默认级别,值3也增加了基于or的sql注入测试。
在某些情况下,比如UPDATE语句中的sql注入,注入基于or的有效负载可能导致表的所有条目的更新,这肯定不是测试者想要的。出于这个原因和其他原因,我们引入了这个选项:用户可以控制测试的有效负载,用户可以任意选择使用也有潜在危险的负载。
例如: --risk num mum范围 1~3

sqlmap设置风险参数

默认情况下,通过比较注入的请求页面内容和未注入的原始页面内容,可以区分真查询和假查询。这种观念并不总是起作用是因为每次刷新页面内容的变化有时设置没有注入,例如当页面有个计数器,一个动态广告横幅或任何其他HTML的一部分呈现动态和可能改变时间不仅因为用户的输入。为了绕过这个限制,sqlmap努力识别响应体的这些片段并进行相应处理。
–string:指定包含字符串 查询为True。
–not-string:指定包含字符串 查询为False。
–regexp:指定通过正则表达式匹配字符串,查询为True。
–code:指定匹配HTTP状态响应码,查询为True。

sqlmap设置内容比较参数

–text-only:设置页面内容中包含文本。
例如:–text-only=“Welcome for True and Forbidden for False”
–titles:设置页面title中包含文本。前提需要知道如何区分查询的真与假,根据返回字符串内容不同。例如: --titles=“Login”

sqlmap注入技术参数

sqlmap设置具体sql注入技术

默认情况下,sqlmap会使用所有支持的技术进行探测。这种探测比较耗时。
–technique 参数用来设置具体sql注入技术。以下列出sqlmap支持的sql注入技术。
B:Boolean-based blind 基于布尔的盲注
E:Error-based 报错注入
U:Union query-based Union查询注入
S:Stacked queries 堆叠注入
T:Time-based blind 基于时间的盲注
Q:lnline queries 内联查询注入
例如:sqlmap -u “URL” --technique B --current-db ——利用基于布尔的盲注对注入点进行sql注入探测。

sqlmap设置时间盲注延迟时间

在测试基于时间的盲sql注入时,可以设置秒来延迟响应,方法时提供–time-sec选项,后面跟着一个整数。默认情况下,它的值设置为5秒。
例如: sqlmap -u “URL” --time-sec 3 --current-db ——设置成3秒

sqlmap设置union字段数

默认情况下,sqlmap测试使用1到10列的union查询sql注入技术。但是,通过提供更高–level值,可以将此范围增加到50列。
可以手动告诉sqlmap使用特定范围的列来测试这种类型的sql注入,方法是设置–union-cols后跟一系列整数。例如,12-16表示使用12到16个列对union查询sql注入进行测试。
例如:sqlmap -u “URL” --union-cols 12-18 --current-db
默认为10
在这里插入图片描述

sqlmap设置union字符

默认情况下,sqlmap测试使用空字符的联合查询sql注入技术。但是,通过提供更高级别的值,sqlmap还将使用随机数执行测试,因为在某些情况下,union查询测试使用null会失败,而使用随机整数则会成功。
可以手动告诉sqlmap使用特定字符测试这种类型的sql注入,方法是使用带有所需字符值的选项–union-char(例如–uion-char 123)。

指定字符值为123在这里插入图片描述

sqlmap设置union查询表

某些情况下,数据库设置了对应的权限,很有可能通过sqlmap不能直接通过某些表获取对应的数据。这时可以设定union查询sql注入的具体数据表才可以得到数据。–uinon-from 表名
在这里插入图片描述
所有得union查询都会查询users表
在这里插入图片描述

sqlmap设置DNS露出攻击

针对目标网络很有可能对外部流量进行限制,或者设置WAF。
通过设置DNS流量突破限制 --dns-domain “dns服务器” 需要用户自身具有一个开放53端口的DNS服务器,通过DNS流量来获取web应用程序中数据内容。
在这里插入图片描述

sqlmap设置二次注入

sqlmap中可以设置二次注入的结果页面。
–second-order url
在这里插入图片描述

sqlmap识别指纹

–fingerprint 或 -f 探测目标指纹信息。

–banner 或 -b 也可达到同样目的。

在这里插入图片描述

sqlmap检索DBMS信息

sqlmap检索DBMS Banner

获取后端数据库Banner信息。
–banner 或者 -b
在这里插入图片描述

sqlmap检索DBMS当前用户

获取DBMS当前用户
–current-user
在这里插入图片描述

sqlmap检索DBMS当前数据库

获取DBMS当前数据库名 --current-db
在这里插入图片描述

sqlmap检索DBMS当前主机名

–hostname
在这里插入图片描述

sqlmap检索DBMS用户信息

sqlmap探测当前用户DBA

–is-dba 探测当前用户是否是数据库管理员。
在这里插入图片描述

sqlmap枚举DBMS用户

获取DBMS所有用户 --users
在这里插入图片描述
在这里插入图片描述

sqlmap枚举DBMS用户密码

–password 获取用户密码
在这里插入图片描述

sqlmap枚举DBMS权限

–privileges | --role(角色)
在这里插入图片描述

sqlmap枚举信息

sqlmap例举数据库名

–dbs 列举数据库名称
在这里插入图片描述

sqlmap枚举数据库表

–tables 枚举表名 —— 指定具体数据库 -D 数据库名
–exclude-sysdbs 排除系统数据库表名

sqlmap枚举数据库表列

–columns -D指定数据库 -T指定数据表 -C指定具体字段
在这里插入图片描述
在这里插入图片描述

sqlmap枚举数据值

–dump
在这里插入图片描述
在这里插入图片描述

sqlmap枚举schema信息

用户可以使用此开关 --schema检索DBMS模式。模式列表将包含所有数据库、表和列,以及它们各自的类型。与–exclude-sysdb结合使用时,指挥检索和希纳是包含非系统数据库的模式的一部分。

python sqlmap.py -u "http://192.168.48.130/sqlmap/mysql/get_int.php?id=1" --schema--batch --exclude-sysdbs

在这里插入图片描述

SQLmap检索数据表数量

如果用户只想知道表的条目数,则可以使用此开关。
–count

python sqlmap.py -u "URL" --count -D testdb

在这里插入图片描述

sqlmap获取数据信息(鸡肋-难用)

–start,–stop,–first,–last
–start 1 --stop3 获取第二张到第三张表的名字
–stop 1 获取第一张表的名字
–first 3 --last 5 获取从第三出发到第五个字符

sqlmap设置条件获取信息

–privot-column=id 设置独一无二的列名
在这里插入图片描述
–where=“id>3” 设置筛选条件
在这里插入图片描述
在这里插入图片描述

sqlmap暴力破解数据

使用场景:mysql<5.0时,Mysql中没有元数据库 information_schema。
–common-tables
–common-columns
在这里插入图片描述
这里可选默认字典和自定义字典

sqlmap读取文件

–file-read 路径 读取对应文件内容。
注意:此处路径为绝对路径。
在这里插入图片描述

sqlmap写入文件

–file-write 在后端DBMS文件系统上写入本地文件
–file-dest 将读取到的文件写入到远程绝对路径

将文件写入到目标服务器上
在这里插入图片描述

sqlmap检索所有信息

-a --all 检索数据库全部信息。
在这里插入图片描述

sqlmap系统参数

sqlmap执行系统命令

–os-shell 获取反弹的cmd进行命令执行,在此之前需要上传命令执行脚本。
在这里插入图片描述
执行过程
在这里插入图片描述
选择目标服务器语言
在这里插入图片描述
探索绝对路径1、自带路径探索 2,3、自定以路径 4、暴力破解路径
在这里插入图片描述
在这里插入图片描述
这个命令其实是为上传的脚本提供参数
在这里插入图片描述
在这里插入图片描述

sqlmap结合Metasploit ?????

python sqlmap.py -u "URL" --os--pwn    #———适用数据库:MySQL and PostgreSQL

注册表介绍

注册表(Registry,繁体中文版Windows操作系统称之为登录档)是Microsoft Windows中的一个重要的数据库,用于存储系统和应用程序的设置信息。早在Windows 3.0推出OLE技术时,注册表就已经出现。随后推出的Windows NT 是第一个从系统级别广泛使用注册表的操作系统。但是,从Microsoft Windows 95操作系统开始,注册表才真正成为Windows用户经常接触的内容。并在其后的操作系统中继续延用至今。

cmd->regedit
在这里插入图片描述

sqlmap注册表操作

–reg-read 读取注册表
–reg-add 增加注册表
–reg-del 删除注册表
–reg-key 键值,–reg-value 值,–reg-data 数据,–reg-type 类型

在这里插入图片描述

sqlmap 通用参数

sqlmap加载sqlite会话文件

sqlmap自动为每个目标创建持久会话SQLite文件,位于专用输出目录中,其中存储会话恢复所需的所有数据。如果用户想显式地设置会话文件位置(例如在一个位置为多个目标存储会话数据),可以使用此选项。-s

cat查看是一堆乱码
在这里插入图片描述
使用-s 加载文件,显式会话文件保存的内容,不再进行探测。
在这里插入图片描述

sqlmap加载http文本文件

这个选项需要指定文本文件的参数来写入sqlmap http(s)请求和响应生成的所有http(s)流量。这主要用于调试目的——当向开发人员提供一个潜在的bug报告时,发送这个文件。 -t
在这里插入图片描述
打开文件
在这里插入图片描述

sqlmap设置默认选择选项

如果希望sqlmap作为批处理工具运行,在sqlmap不需要任何用户交互,那么可以使用–batch 来强制执行。这将使sqlmap在需要用户输入时保持默认行为。
在这里插入图片描述

sqlmap执行系统命令

–os-cmd=“命令” 命令由操作系统决定,同样需要上传命令执行文件。
在这里插入图片描述

sqlmap设置盲注字符集

在基于布尔和基于时间的sql盲注中,用户可以强制使用自定义字符集来加速数据检索过程。例如,如果转储消息摘要值(例如SHA1),则使用–charset=“0123456789abcdef”,预期请求数量比正常运行少30%左右。
在这里插入图片描述

sqlmap爬取URL

sqlmap可以通过从目标位置开始收集链接(爬行)来收集潜在的脆弱链接。使用此选项,用户可以设置一个深度(到起始位置的距离),低于这个深度,sqlmap不会进入收集阶段,因为只要有新的链接要访问,就会递归地执行这个过程。(这个深度相当于文件夹一层一层的关系)
–crawl

python sqlmap.py -u "url" --batch --crawl=3

–crawl-exclude 字符串 :存在此字符串的URL不进行爬取。
在这里插入图片描述

sqlmap在CSV输出中使用的分隔字符

当被转存的数据存储到CSV格式(–dump-format=CSV)时,条目必须用“分离值”分隔(默认值是,)。如果用户想要覆盖它的默认值,可以使用这个选项(例如,–csv-del=“;”)。
在这里插入图片描述
生成csv文件,查看内容
在这里插入图片描述

sqlmap设置输出格式

当将转存表数据存储到输出目录中的响应文件中时,sqlmap支持三种不同的格式:CSV、HTML和SQLITE。默认是CSV,其中每个表行一行一行地存储到文件中,每个条目用逗号分隔(或提供了选项–csv-del)。对于HTML,输出被存储到一个HTML文件中,其中每一行都用格式化表中的一行表示。对于SQLITE,输出存储在SQLITE数据库中,原始表内容复制到同名的响应表中。
–dump-format
在这里插入图片描述
找到默认文件路径,打开文件
在这里插入图片描述

sqlmap探测之前检测Internet连接

在进行评估目标之前,检测当前计算机Internet连接是否正常。确保探测失败不是因为网路拦截问题。
–check-internet
在这里插入图片描述

sqlmap解析和测试表单的输入字段

–form
在这里插入图片描述

sqlmap设置预计完成时间

可以实时地计算和显式估计的到达时间,以检索每个查询输出。当用于检索输出的技术是任何盲注入类型时,显式完成了多少。–eta
在这里插入图片描述

sqlmap刷新会话文件

由于会话文件的概念,所以最好知道可以使用选项flush-session刷新该文件的内容。通过这种方式,可以避免sqlmap中默认实现的缓存机制。其他可能的方法是手动删除会话文件。
在这里插入图片描述

sqlmap忽略会话中存储的结果

使用选项–fresh-queries来忽略改文件的内容。通过这种方式,可以保持会话文件不变,从而完成新的探测。
在这里插入图片描述

sqlmap使用Hex函数检索数据

非ASCII数据的检索需要特殊的需求。解决这个问题的一个方法是使用DBMS hex函数。数据在被检索之前被编码为16进制形式,然后被为编码为原始形式。 --hex

python sqlmap.py -u "URL" --hex -v3 --batch

在这里插入图片描述

sqlmap设置自定义输出路径

sqlmap默认将会话和结果文件存储在子目录输出中。如果想使用不同位置,可以使用这个选项(例如 --output-dir=/tmp)。
在这里插入图片描述

sqlmap从响应界面解析错误

如果web应用程序配置为调试模式,以便在HTTP响应中显式后端数据库管理系统错误消息,sqlmap可以解析并显式它们。这对于调试很有用,比如理解为什么某个枚举或接管开关不起作用——这可能与会话的特权有关。–parse-error
在这里插入图片描述
保存sqlmap配置文件 --save
可以将命令行选项保存到配置INI文件中。然后,可以使用-c选项编辑生成的文件并将其传递给sqlmap。
更新sqlmap --update

sqlmap前置设置DBMS编码

–encoding=“gbk”
在这里插入图片描述

sqlmap存储HTTP流量到HAR

–har=“HARFILE”
HAR(HTTP Archive),是一个用来存储HTTP请求/响应信息的通用文件格式,基于JSON。
在这里插入图片描述

sqlmap筛选执行的具体payload

–test-filter=“ROW”
在这里插入图片描述
在这里插入图片描述

sqlmap过滤忽略具体payload

–test-skip=“BENCHMARK”
在这里插入图片描述
拓展
针对proxy日志文件使用正则表达式筛选目标.。–scope=“regex”

sqlmap杂项参数

-z 命令缩写:例如 -z flu,bat,ban,tec=EU—— flush-session,batch,banner,technique 。。。。
在这里插入图片描述
-alert 当发现SQL注入时,运行主机系统命令
在这里插入图片描述
-beep 当发现sql注入时,发出BB声
在这里插入图片描述

–cleanup 清除DBMS udf创建的数据表。
–dependencies 查看依赖项 之后就可安装
在这里插入图片描述
–disable-coloring不进行高亮显示
–identify-waf 查看是否具有WAF保护
–moblie 使用收集端User-Agent
在这里插入图片描述
–offline 仅使用session文件,不进行联网探测
–purge-output 清除output目录下的文件
–skip-waf 绕过WAF
–sqlmap-shell 进入sqlmap shell
–tmp-dir=TMPDIR 指定本地目录用来存储临时文件
–web-root=WEBROOT 指定站点跟目录
–wizard 使用向导式子的sqlmap
–answer=ANSEWERS 设置问题答案 例如“quit=N,follow=N”
–gpage=GOOGLEPAGE 设置Google Dork的页码数
–smart 智能探测
有些情况下,用户大量的潜在目标URL(例如,提供了选项-m),希望尽快找到一个脆弱的目标。如果使用–smart,那么将在扫描中进一步使用数据库管理系统错误的参数。否则就跳过它们。

sqlmap Tamper脚本

Tamper脚本结构介绍

sqlmap是一个自动化的sql注入工具,而tamper则是对其进行扩展的一系列脚本,主要功能是对本来的payload进行tending的更改以绕过waf。
在这里插入图片描述

Tamper函数介绍

tamper是整个脚本的主体。主要用于修改原本的payload。
在这里插入图片描述

dependencies函数介绍

就tamper脚本支持/不支持使用环境进行声明
在这里插入图片描述

Tamper脚本常量文件

在这里插入图片描述

Tamper脚本分析

在这里插入图片描述

参考资料

https://www.bilibili.com/video/BV1bJ41177mD?p=26&spm_id_from=333.1007.top_right_bar_window_history.content.click&vd_source=822ed54fe446cd5d38b702cfccd5a730

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐