gpt4 book ai didi

mysql - nbsp 字符可能不会作为 nbsp 传递到 MySQL 后端

转载 作者:行者123 更新时间:2023-11-29 12:07:40 27 4
gpt4 key购买 nike

我正在遵循一个教程,其中用 PHP 编写的 Web 应用程序将输入中的空格(“id”参数)列入黑名单。任务是添加其他字符,这基本上绕过了这个黑名单,但仍然由后端的 MySQL 数据库解释。考虑到 nbsp 字符没有列入黑名单,我构造了一个像这样的 URL - http://192.168.2.15/sqli-labs/Less-26/?id=1'%C2%A0||%C2A0'1 ,其中 C2A0 是 nbsp 字符的 UTF-8 表示形式。然而,这会引发 MySQL 错误:

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在 ' || 附近使用的正确语法。 '1' LIMIT 0,1' 在第 1 行

我将数据库上运行的 SQL 查询字符串反射回页面

从用户中选择 * WHERE id='1' || '1'限制0,1

这个查询对我来说似乎没问题,它不应该抛出错误。我怀疑这可能与字符集有关。但我对 MySQL 中的字符集以及在什么情况下适用哪种字符集的了解非常有限。

运行时看到的内容显示变量如'char%';


+--------------------------------------+---------------------- ------+
|变量名 |值(value)|
+--------------------------------------+---------------------- ------+
|字符集客户端 | UTF8 |
|字符集连接 | UTF8 |
|字符集数据库 |国语 |
|字符集文件系统 |二进制 |
|字符集结果 | UTF8 |
|字符集服务器 |拉丁语1 |
|字符集系统 | UTF8 |
|字符集目录 |/usr/share/mysql/charsets/|/usr/share/mysql/charsets/|
+--------------------------------------+---------------------- ------+

最佳答案

MySQL 语法无法识别 utf8 C2A0
在此测试中,请注意常规空格 (20) 和 NO-BREAK SPACE (C2A0):

mysql> select UNHEX('53454C45435420313B'), UNHEX('53454C454354C2A0323B');
+-----------------------------+-------------------------------+
| UNHEX('53454C45435420313B') | UNHEX('53454C454354C2A0323B') |
+-----------------------------+-------------------------------+
| SELECT 1; | SELECT 2; |
+-----------------------------+-------------------------------+
1 row in set (0.00 sec)

然后我复制了这两条语句:

mysql> SELECT 1;
+---+
| 1 |
+---+
| 1 |
+---+
1 row in set (0.00 sec)

mysql> SELECT 2;
ERROR 1064 (42000): You have an error in your SQL syntax; check
the manual that corresponds to your MySQL server version
for the right syntax to use near 'SELECT 2' at line 1

关于mysql - nbsp 字符可能不会作为 nbsp 传递到 MySQL 后端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31199679/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com