What does # mean in sql?

喜夏-厌秋 提交于 2019-12-18 02:37:25

问题


Does anyone know what something like OR 1# means in the context of mysql injection?


回答1:


It is MySQL's version of the line comment delimiter. In standard SQL, the line comment delimiter is --.

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

So in the context of SQL injection, if the attacker knows you're using MySQL he may use it to abruptly terminate the malicious SQL statement, causing MySQL to ignore whatever is behind the # and execute only the stuff that comes before it. This is only effective against single-line SQL statements, however. Here's an example:

Input:

Username: fake' OR 1#
Password: pass

Resultant SQL:

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

Which is executed as this, which returns every row:

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



回答2:


This is the start of a comment. It means that anything after that will be skipped by the parser.



来源:https://stackoverflow.com/questions/4300669/what-does-mean-in-sql

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!