【问题标题】:What does # mean in sql?sql中的#是什么意思?
【发布时间】:2011-05-17 02:03:40
【问题描述】:

有人知道OR 1# 之类的东西在 mysql 注入的上下文中是什么意思吗?

【问题讨论】:

  • # 符号有几个英文名称(数字、八角形、十六进制、哈希、尖角),您可以用 Google 搜索 :)
  • :) 感谢您帮助我找到完全不相关的页面!说真的,我在谷歌上搜索了 mysql 英镑符号等,然后才询问并获得了有关英镑的页面
  • 具有讽刺意味的是,如果您搜索mysql hash symbol,这现在是最上面的结果,而mysql octothorpe 则是第二个结果。
  • sharp sql 的最佳结果,但仍然找不到答案:/ 编辑:我在第三页找到了答案:stackoverflow.com/questions/3166117/…

标签: mysql sql syntax comments


【解决方案1】:

它是 MySQL 版本的行注释分隔符。在标准 SQL 中,行注释分隔符是--

-- This is a standard SQL comment.
# This is a MySQL comment.

所以在 SQL 注入的上下文中,如果攻击者知道你正在使用 MySQL,他可能会使用它来突然终止恶意 SQL 语句,导致 MySQL 忽略 # 后面的任何内容并只执行出现的内容在它之前。但是,这仅对单行 SQL 语句有效。这是一个例子:

输入:

用户名:fake' OR 1#
密码:pass

结果 SQL:

SELECT * FROM users WHERE username = 'fake' OR 1#' AND password = 'pass'

按此执行,返回每一行

SELECT * FROM users WHERE username = 'fake' OR 1

【讨论】:

    【解决方案2】:

    这是评论的开始。这意味着解析器将跳过之后的任何内容。

    【讨论】:

    • @JD:啊哈,为了防止 sql 注入,我们需要在查询中添加更多行(讽刺);-)
    猜你喜欢
    • 1970-01-01
    • 2013-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-07
    相关资源
    最近更新 更多