Mysql绕过小技巧
上源码。
<?php
$mysqli = new mysqli("localhost", "root", "root", "security");/* check connection */
if ($mysqli->connect_errno) {printf("Connect failed: %s\n", $mysqli->connect_error);exit();
}$mysqli->query("set names utf8");$username = addslashes($_GET['username']);if ($username === 'admin') {die('permission denied');
}/* Select queries return a resultset */
$sql = "SELECT * FROM `users` WHERE username='{$username}'";if($result = $mysqli->query($sql)) {printf("Select returned %d rows.\n", $result->num_rows);while($row = $result->fetch_array(MYSQLI_ASSOC)){var_dump($row);}$result->close();
}else{var_dump($mysqli->error);
}$mysqli->close();
这是一个基于utf-8的一道练习题。
$username = addslashes($_GET['username']);
首先这句是对username的值进行过滤,过滤掉你的单引号。
if ($username === 'admin') {
die('permission denied');
}
这句如果你的username等于admin,就进入permission denied,意味着失败。
所以我们现在想的就是如何去绕过这些过滤,就需要在admin后面加一些字符,让程序觉得你不是admin让数据库觉得你又是admin就行。


为什么加了一个c2就可以实现绕过了呢。
造成这种的原因其实是字符集不同导致的。

当我门设置了set names utf8的时候,mysql的字符集从utf-8-->utf-8-->latin1。
这就导致出现了字符集的差异。
比如佬这个字,在utf-8中的编码是\%e4\%bd\%ac。
将这三个一个一个的挨个写进url中运转。
127.0.0.1/web4.php?username=admin%e4
127.0.0.1/web4.php?username=admin%e4%bd
127.0.0.1/web4.php?username=admin佬
当%ac加进去的时候就变成了佬字,前两个url都能成功的绕过,最后一个不行,是因为latin1不识别汉字,导致无法绕过,而utf-8里,一个汉字是三个字节,而当这个汉字的字节不全时,比如上面两个url,就会把admin后面的字符给无视掉,所以实现了绕过。
这是另外的绕过方式,c2这个是因为:
UTF-8编码是变长编码,可能有1~4个字节表示:
-
一字节时范围是[00-7F]
-
两字节时范围是C0-DF
-
三字节时范围是E0-EF[80-BF]
-
四字节时范围是F0-F780-BF

c2属于两个字节的范围,所以依然不完全,也让mysql无视掉了。
相关文章:
Mysql绕过小技巧
上源码。 <?php $mysqli new mysqli("localhost", "root", "root", "security");/* check connection */ if ($mysqli->connect_errno) {printf("Connect failed: %s\n", $mysqli->connect_error);exit(); }$my…...
气象大数据案例项目(求各气象站的平均气温)
气象大数据案例项目(求各气象站的平均气温) 一、项目需求二、数据格式三、项目开发3.1 在windows 进行开发3.2 运行结果3.3 对项目打包 一、项目需求 现在有一份来自美国国家海洋和大气管理局的数据集,里面包含近30年每个气象站、每小时的天…...
博客摘录「 一个ModBus RTU程序(支持01、02、03、05、06、15、16功能码)」2024年4月19日
发送数据最好改为中断模式,不然通信速度不够。...
Vue3学习笔记第一天
MVVM Vue是一种用于构建用户界面的JavaScript框架。MVVM 是Vue采用的一种软件架构模式,用于构建交互式的用户界面。它的全称是 Model-View-ViewModel,这三个部分分别代表了应用程序的不同层次和角色: Model(模型)&…...
C++之类与对象(完结撒花篇)
目录 前言 1.再探构造函数 2.类型转换 3.static成员 4. 友元 5.内部类 6.匿名对象 7.对象拷贝时的编译器优化 结束语 前言 在前面的博客中,我们对类的默认成员函数都有了一定了解,同时实现了一个日期类对所学的没内容进行扩展延伸,本…...
代码质量的守护者:Python静态代码分析工具的集成之道
标题:代码质量的守护者:Python静态代码分析工具的集成之道 在软件开发过程中,代码质量是至关重要的一环。Python作为一种流行的编程语言,拥有众多的静态代码分析工具,它们能够在代码运行之前检测潜在的错误和代码风格…...
JVM -- 类加载器
类加载器(ClassLoader)是Java虚拟机提供给应用程序去实现访问接口和类字节码数据的技术。类加载器只负责加载过程中的字节码获取并加载到内存的这一过程。 一、 类加载器的分类 类加载器的详细信息可以使用Arthas通过classloader命令查看: 1.启动类加载器(Boots…...
OLAP引擎之StarRocks
StarRocks 是一款新兴的开源分布式实时分析型数据库,专为高性能、高并发的数据分析场景设计。它结合了传统数据仓库和大数据技术的优势,提供了强大的实时数据处理和分析能力。以下是对 StarRocks 的详细介绍,涵盖其基本概念、核心特性、架构设…...
基于微信小程序的小区业主服务系统(源码+论文+部署讲解等)
博主介绍:✌全网粉丝10W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术栈介绍:我是程序员阿龙ÿ…...
C++ | Leetcode C++题解之第327题区间和的个数
题目: 题解: class Solution { public:int countRangeSumRecursive(vector<long>& sum, int lower, int upper, int left, int right) {if (left right) {return 0;} else {int mid (left right) / 2;int n1 countRangeSumRecursive(sum,…...
C# Winform 多窗体切换方式一
一、简介 在 Winform 开发中,多窗体的切换是一个常见的需求,比如登录成功后,切换至主界面,在网上查阅相关的资料,你会发现很多都是用 form2.Show(); this.Hide(); 这种方式,这种方式也存在一些问题&#…...
笔记本CPU天梯图(2024年8月),含AMD/骁龙等新CPU
原文地址(高清无水印原图/持续更新/含榜单出处链接): 2024年8月笔记本CPU天梯图 2024年8月笔记本CPU天梯图 2024年8月5日更新日志:常规更新Cinebench R23、PassMark笔记本CPU天梯图,新增Geekbench 6.2单核多核天梯图&…...
GitLab-CI/CD指南
由于公司没有运维,写go服务时各个环境编译部署还是略显麻烦,由于代码管理使用的是 gitlab,所以决定使用 gitlab 自带的 CI/CD 来做自动编译和部署,这样每次提交代码以后就可以自动部署到服务器上了。 gitlab 本身只有 CI/CD 的接…...
io目录操作学习
1、基本概念 目录也是一种文件,因此操作流程与普通文件类似,有诸如打开、关闭、定位等概念,但目录是一种特殊的文件,目录存储的数据的最小单位并不是字符,而是目录项。这使得目录跟普通文件又有区别。 在Linux中&…...
Ant-Design-Vue
Ant-Design-Vue是蚂蚁金服Ant Design官方推荐的Vue版UI组件库,它继承了Ant Design的设计语言和Vue.js的易用性,为开发者提供了丰富、高质量的Vue组件,极大地简化了前端开发流程。以下是一份详细的Ant-Design-Vue快速上手指南及排坑建议&#…...
2024互联网暑期实习面经和流程记录分享
2024互联网暑期实习面经和流程记录分享 面试经验和流程需要注意的点 面试经验和流程 因为敏感信息的原因,这里涉及到公司名字的全部进行打码 笔者投递和面试了很多公司,具体有包括算法和开发岗,下面的公司一律用字母代替。 O公司࿰…...
风云崛起之拉氏变换和拉式逆变换
图像的分割写出来了,但是写的不好,暂时先不发了。这两天小y想在把拉式变换的内容写出来,小y最近再看信号和电路,需要复习数学,所以把这点写出来。 首先要推出分布积分的公式,我们知道积分和微分为逆运算&am…...
1、.Net UI框架:WinUI - .Net宣传系列文章
WinUI(Windows UI Library)是微软提供的一个用于构建Windows应用程序的本机UI平台组件。它与Windows应用SDK紧密相关,允许开发者创建适用于Windows 10及更高版本的应用程序,并且可以发布到Microsoft Store。WinUI 3是最新的一代,它提供了与操…...
计算机的错误计算(五十九)
摘要 讨论用 Go语言实现的 函数的计算精度问题。 由计算机的错误计算(五十五)知,国际 IEEE 754 标准中, 函数具有定义域 . 那么,在常规编程模式下用 Go语言实现这个函数,其输出的精度如何? …...
【数学分析笔记】第1章第1节:集合(1)
作为一个计算机专业的人,想自学一下数学专业的专业课补一补AI基础,顺带写个笔记,听的课是陈纪修版本的数学分析: 1. 集合与映射 1.1 集合 1.1.1 基本概念 集合:由某种特定性质的具体的或抽象的对象汇集的总体。 集…...
工业安全零事故的智能守护者:一体化AI智能安防平台
前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...
Debian系统简介
目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版ÿ…...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...
Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...
ABAP设计模式之---“简单设计原则(Simple Design)”
“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...
安卓基础(aar)
重新设置java21的环境,临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的: MyApp/ ├── app/ …...
九天毕昇深度学习平台 | 如何安装库?
pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子: 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...
无人机侦测与反制技术的进展与应用
国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机(无人驾驶飞行器,UAV)技术的快速发展,其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统,无人机的“黑飞”&…...
【C++特殊工具与技术】优化内存分配(一):C++中的内存分配
目录 一、C 内存的基本概念 1.1 内存的物理与逻辑结构 1.2 C 程序的内存区域划分 二、栈内存分配 2.1 栈内存的特点 2.2 栈内存分配示例 三、堆内存分配 3.1 new和delete操作符 4.2 内存泄漏与悬空指针问题 4.3 new和delete的重载 四、智能指针…...
腾讯云V3签名
想要接入腾讯云的Api,必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口,但总是卡在签名这一步,最后放弃选择SDK,这次终于自己代码实现。 可能腾讯云翻新了接口文档,现在阅读起来,清晰了很多&…...
