首页 运维知识 sql编码造成的安全问题(基于mysql8.0版本)

sql编码造成的安全问题(基于mysql8.0版本)

mysql8.0开始,默认编码是utf8mb4,但总有数据库会设置为gbk,所以也可能存在同样编码问题 <?php define(‘DBHOST’, ‘127.0.0.1’)…

mysql8.0开始,默认编码是utf8mb4,但总有数据库会设置为gbk,所以也可能存在同样编码问题

<?php
define('DBHOST', '127.0.0.1');
define('DBUSER', 'root');
define('DBPW', 'password');
define('DBNAME', 'stu');
define('DBPORT', '3306');

$link=@mysqli_connect(DBHOST, DBUSER, DBPW, DBNAME, DBPORT);



for($i = 0 ; $i < 256 ; $i++){
    $c = chr($i);
    $name = @mysqli_real_escape_string($link,'201215121' . $c);
    $sql = "SELECT * FROM `s` WHERE `sno` = '{$name}'";
    $result=@mysqli_query($link,$sql);
    $row = @mysqli_fetch_array($result,MYSQLI_NUM);
    if ($row[0] == '201215121') {
        echo "$i";
        echo "{$c} <br/>";
    }
}

输出$c时可能会出现乱码,所以可以echo utf8_encode($i);

这里是ascii码0-256所有的对照字符 https://blog.csdn.net/ttmice/article/details/50978054

mysql8.0基本也存在同样的问题,对于其他编码,需要自己再进行测试

tips:测试发现无论后面添加多少空格,查询都是可行的,猜测sql查询会自动去掉空格,不过其它空白符不行
测试代码:

<?php
define('DBHOST', '127.0.0.1');址
define('DBUSER', 'root');
define('DBPW', 'password');
define('DBNAME', 'stu');
define('DBPORT', '3306');

$link=@mysqli_connect(DBHOST, DBUSER, DBPW, DBNAME, DBPORT);

$name = @$_GET['name'];

$sql = "SELECT * FROM `s` WHERE `sno` = '{$name}'";

$result=@mysqli_query($link,$sql);
$row = @mysqli_fetch_array($result,MYSQLI_NUM);
echo $row[0];

?>
免责声明:文章内容不代表本站立场,本站不对其内容的真实性、完整性、准确性给予任何担保、暗示和承诺,仅供读者参考,文章版权归原作者所有。如本文内容影响到您的合法权益(内容、图片等),请及时联系本站,我们会及时删除处理。

作者: 小小编

为您推荐

dell R710 更换raid卡后,raid卡信息没有了,处理方案

dell R710 更换raid卡后,raid卡信息没有了,处理方案

1.将一台服务器(A)的硬盘依次拔出,按相同顺序插入另一台同样配置的服务器(B) 2.启动服务器(B) 3.按提示键盘按...
PL SQL Developer 13连接Oracle数据库并导出数据详细操作教程方法

PL SQL Developer 13连接Oracle数据库并导出数据详细操作教程方法

下载 并安装 PL SQL Developer 13,默认支持中文语言 ========================...
关于一条sql语句在mysql中是如何执行的

关于一条sql语句在mysql中是如何执行的

最近开始在学习mysql相关知识,自己根据学到的知识点,根据自己的理解整理分享出来,本篇文章会分析下一个sql语句在my...
关于sql注入姿势总结(mysql)

关于sql注入姿势总结(mysql)

前言 学习了sql注入很长时间,但是仍然没有系统的了解过,这次总结一波,用作学习的资料。 从注入方法分:基于报错、基于布...
关于Oracle SQL外连接

关于Oracle SQL外连接

SQL提供了多种类型的连接方式,它们之间的区别在于:从相互交叠的不同数据集合中选择用于连接的行时所采用的方法不同。 连接...

发表回复

返回顶部