注释符

MYSQL注释符介绍:
MYSQL有三种注释符,分别是单行注释符:#、–空格(就是横杠横杠空格),和多行注释符:/**/

MYSQL注释符测试:

执行的SQL语句:

select name from usertest where id=1 – 注释测试

mysql表注释SQL mysql注释符作用_mysql表注释SQL


执行的sql语句:

select name from usertest where id=1 #注释测试

mysql表注释SQL mysql注释符作用_sql_02


执行的sql语句:

select name from usertest where id=1 /注释测试/

mysql表注释SQL mysql注释符作用_sql_03


测试结果:三种注释符都达到了注释的目的,使得注释符后面的字符不参与SQL语句,仅做到注解的作用。

\

下面展示,在Sqli-Labs靶场上实际操作时的注释符与MYSQL数据库内部执行时的注释符的不同。

1、首先在将phpstudy_pro\WWW\sqllab\Less-1\index.php靶场第一关的源码改一下,添加如下图内容。

目的:展示出靶场后台实际执行的SQL语句,方便我们分析。

mysql表注释SQL mysql注释符作用_SQL_04

2.1、从下图中可以看到,当我们使用#做注释符时,界面报错了,从报错信息中得到,后台执行的SQL语句中并没有#注释符的出现,我们再利用burpsuit拦截上传的数据,也能看到,上传的SQL语句中并没有#注释符。

造成原因:#注释符,在URL中通常用于表示书签或者锚点,#号连接着的后面的字符都不会被解析。

Less-1/?id=-1' union select 1,database(),3

mysql表注释SQL mysql注释符作用_编码值_05

mysql表注释SQL mysql注释符作用_编码值_06


2.2、若想要在URL中要使用#注释符,可以使用其编码值%23来代替。结果如下图所示。

Less-1/?id=-1' union select 1,database(),3 %23

mysql表注释SQL mysql注释符作用_mysql表注释SQL_07

mysql表注释SQL mysql注释符作用_Less_08

3、从下图中可以看到,当我们使用–空格做注释符时,界面报错了,从报错信息中得到,后台执行的SQL语句中只有–后面并没有跟着一个空格的,我们再利用burpsuit拦截上传的数据,也能看到,上传的SQL语句中只有–后面并没有跟着一个空格。

造成原因:空格:URL在编码的过程中,不会编码末端的空格,个人认为可能是防止用户误操作输入了无意义的空格。在URL中末端要使用空格符的话,可以使用+号或者编码值%20来代替。在URL中+号就表示空格。

Less-1/?id=-1' union select 1,database(),3 -- (就是横杠横杠空格)

mysql表注释SQL mysql注释符作用_编码值_09

mysql表注释SQL mysql注释符作用_sql_10


3.1、若想要在URL中要使用–空格作为注释符,可以使用–+来代替。结果如下图所示。

Less-1/?id=-1' union select 1,database(),3 --+

mysql表注释SQL mysql注释符作用_Less_11

mysql表注释SQL mysql注释符作用_sql_12

3.2、若想要在URL中要使用–空格作为注释符,可以使用–%20来代替。结果如下图所示。

Less-1/?id=-1' union select 1,database(),3 --%20

mysql表注释SQL mysql注释符作用_mysql表注释SQL_13

mysql表注释SQL mysql注释符作用_SQL_14

分析与总结:

#:在URL中通常用于表示书签或者锚点,#号连接着的后面的字符都不会被解析。在URL中要使用#号,可以使用编码值%23来代替。

空格:URL在编码的过程中,不会编码末端的空格,个人认为可能是防止用户误操作输入了无意义的空格。在URL中末端要使用空格符的话,可以使用+号或者编码值%20来代替。在URL中+号就表示空格。