python渗透开发 高阶段位之 waf绕过sql注入 sqlmap --temper模块开发以及框架逻辑修改 以及解释Temper是什么?

embedded/2025/2/4 7:00:25/

目录

temper 解释:

这种操作常见于以下场景:

常见用法:

tamper脚本位置

SQLMAP之temper二次开发说明

如何开发 temper 中的 Python 文件

基本的 temper Python 脚本结构

代码结构:

解释:

二次开发Temper中 base64encode.py 脚本

源码

编码前解释

二次框架编码

最后:


temper 解释:

  • --temper 是 SQLmap 的一个选项,用于设置一个“临时的” HTTP 请求标头。
    • 具体来说,它用来向请求中添加额外的 HTTP 头部字段
    • 而这些字段通常在进行 SQL 注入测试时可能是必需的。
  • --temper 选项允许你指定一个 Python 脚本文件,这个脚本会在 SQLmap 进行每次请求时执行,作为一个钩子来修改或操作 HTTP 请求。
  • 你可以将一个 .py 文件作为 --temper 选项的值传递给 SQLmap,这个 Python 脚本的作用是:
    • 修改请求头:可以在请求中插入自定义的 HTTP 头部。
    • 处理或分析响应:你可以根据需要对请求的响应进行处理。
    • 增加自定义逻辑:比如控制注入的行为,或在执行过程中加入特定的操作。

这种操作常见于以下场景:

  • 需要绕过 Web 应用防火墙(WAF)或其他安全设备时,通过临时添加伪造的 HTTP 头部。
  • 提供特殊的身份验证信息或自定义的请求标头。

常见用法:

sqlmap --url="http://example.com/vulnerable_page" --temper="modify_request.py"
  • 这个命令向 SQLmap 注入请求时会添加一个自定义的 User-Agent 头部。
  • 你可以根据需要修改标头字段和值

tamper脚本位置


SQLMAP之temper二次开发说明

二次开发 SQLmap

  • --temper 选项中的 Python 脚本可以让你根据具体需求更灵活地控制 HTTP 请求和响应的行为。
  • 通过二次开发,你可以在 SQLmap 执行注入测试时自定义请求内容、分析响应,甚至引入额外的处理逻辑。

如何开发 temper 中的 Python 文件

  • 开发过程中,你需要写一个 Python 脚本(也可以复制lib的现有temper的py脚本做二次开发)
    • 这个脚本可以定义多个钩子函数,用来处理请求和响应
    • 在 SQLmap 中,通常会用到两个主要的钩子函数:
  • pre_process_request(request):在 SQLmap 发起 HTTP 请求之前调用。
  • post_process_response(response):在接收到 HTTP 响应之后调用。
  • 你可以根据需要修改请求或响应,也可以加入额外的逻辑来满足你的需求。

基本的 temper Python 脚本结构

  • 以下是一个基础的 temper 脚本框架:

代码结构:

python">def pre_process_request(request):"""处理 HTTP 请求,在 SQLmap 发送请求之前执行。"""# 例如,在请求头中添加自定义的 User-Agentrequest['User-Agent'] = 'CustomUserAgent/2.0'# 可以在请求的 URL 中修改参数值if 'search' in request['url']:request['url'] = request['url'].replace('search=1', 'search=2')# 可以修改请求体if 'POST' in request['method']:request['data'] = request['data'] + '&additional_param=value'# 返回修改后的请求return requestdef post_process_response(response):"""处理 HTTP 响应,在 SQLmap 收到响应后执行。"""# 例如,检查响应内容并根据特定情况执行不同的逻辑if 'error' in response.text:print("Error found in the response.")else:print("Response looks normal.")# 可以根据响应的状态码或内容决定是否继续进行测试if response.status_code == 404:print("Target not found. Stopping further tests.")return None  # 你可以选择返回 `None` 来停止后续操作# 返回修改后的响应return response

解释:

pre_process_request(request)

  • 在发送请求之前,你可以修改请求头(如 User-Agent),修改 URL 或请求数据(如 POST 参数)。
  • 你可以在这里对请求内容进行细粒度的控制,例如绕过 WAF、修改请求格式等。

post_process_response(response):

  • 在接收到响应后,你可以对响应内容进行分析,例如查找错误信息、检查特定的标志,或根据响应内容决定是否继续执行 SQL 注入测试。
  • 你也可以根据响应状态码(如 404)决定是否停止某些操作。

二次开发Temper中 base64encode.py 脚本

源码

编码前解释

  • temper项目中,base64encode.py通常会用于进行Base64编码和解码操作。
    • 如果你要进行二次开发,通常是修改现有功能或添加新特性。
    • 以下是一些常见的操作步骤和可能的实现方式
    • 具体要看对应的需求。

二次框架编码

python">#!/usr/bin/env python"""
Copyright (c) 2006-2024 sqlmap developers (https://sqlmap.org/)
See the file 'LICENSE' for copying permission
"""from lib.core.convert import encodeBase64
from lib.core.enums import PRIORITY__priority__ = PRIORITY.LOWdef dependencies():passdef tamper(payload, **kwargs):"""Base64-encodes all characters in a given payload>>> tamper("1' AND SLEEP(5)#")'MScgQU5EIFNMRUVQKDUpIw=='"""return encodeBase64(payload, binary=False) if payload else payload# 编码字符串
def encode_string(data):return base64.b64encode(data.encode()).decode()# 解码字符串
def decode_string(encoded_data):return base64.b64decode(encoded_data).decode()# 编码文件
def encode_file(file_path):with open(file_path, 'rb') as file:file_content = file.read()return base64.b64encode(file_content).decode()# 解码文件
def decode_file(encoded_data, output_file_path):file_content = base64.b64decode(encoded_data)with open(output_file_path, 'wb') as file:file.write(file_content)

最后:

  • 这些修改和扩展的方向,取决于你的需求和temper项目的具体情况。
  • 你可以根据项目的需求和现有代码架构,选择合适的二次开发方式。

喜欢本文的请动动小手点个赞,收藏一下,有问题请下方评论,转载请注明出处,并附有原文链接,谢谢!如有侵权,请及时联系。


http://www.ppmy.cn/embedded/159396.html

相关文章

使用HTML5 Canvas 实现呼吸粒子球动画效果的原理

在网页开发领域,动画效果能够极大地提升用户体验,让页面变得更加生动有趣。今天,我们深入剖析一个基于 HTML5 Canvas 的 3D 粒子动画 —— 呼吸粒子球。通过详细解读其代码实现,我们将全面了解如何运用 HTML5 的强大功能构建出如此…

XML DOM 解析器

大多数浏览器都内建了供读取和操作 XML 的 XML 解析器。 解析器把 XML 转换为 JavaScript 可存取的对象(XML DOM)。 XML 解析器 XML DOM 包含了遍历 XML 树,访问、插入及删除节点的方法(函数)。 然而,在…

C语言:创建带头结点的动态链表:解析与实现

创建带头结点的动态链表:解析与实现 在本博客中,我们将逐步解析一个C语言程序,该程序用于创建一个带头结点的动态链表。链表用于存储从键盘输入的学生高考总分,以任意负数作为输入结束标志。最终,程序返回链表的头指针…

基于YOLO11的遥感影像山体滑坡检测系统

基于YOLO11的遥感影像山体滑坡检测系统 (价格90) 按照7:2:1随机划分:训练集 6736张 验证集 1924张 测试集 963张 包含 [slide] [山体滑坡] 1种情况 通过PYQT5构建UI界面,包含图片检测,视频检测&…

SpringBoot+Electron教务管理系统 附带详细运行指导视频

文章目录 一、项目演示二、项目介绍三、运行截图四、主要代码1.查询课程表代码2.保存学生信息代码3.用户登录代码 一、项目演示 项目演示地址: 视频地址 二、项目介绍 项目描述:这是一个基于SpringBootElectron框架开发的教务管理系统。首先&#xff…

深入学习华为IPD流程之华为-PDT经理角色认知培训教材

本文介绍了PDT经理的角色认知,包括其在IPD体系中的位置、基本角色定位、关键管理活动、能力模型和评估方法以及培养路径。文章指出PDT经理是重量级产品开发团队的管理者,负责产品的商业成功和跨功能部门合作,通过绩效管理加强团队凝聚力,对商业结果负责。 重点内容: 1. …

机器人抓取与操作概述(深蓝)——1

工业机器人:① “臂”的形态 ② “手”的形态 ③ 视觉,力和触觉 1 机器人的不同形态 “臂”的形态 “手”的形态 2 常见的操作任务 操作:插入、推和滑 抓取:两指(平行夹爪)抓取、灵巧手抓取 落地-产…

51单片机开发:独立键盘实验

实验目的:按下键盘1时,点亮LED灯1。 键盘原理图如下图所示,可见,由于接GND,当键盘按下时,P3相应的端口为低电平。 键盘按下时会出现抖动,时间通常为5-10ms,代码中通过延时函数delay…