Sqli-Lab靶场中SQL注入实际操作使用的注释符与数据库中使用的注释符的不同

注释符

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

MYSQL注释符测试:

执行的SQL语句:

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

在这里插入图片描述
执行的sql语句:

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

在这里插入图片描述
执行的sql语句:

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

在这里插入图片描述
测试结果:三种注释符都达到了注释的目的,使得注释符后面的字符不参与SQL语句,仅做到注解的作用。



\

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

1、首先在将phpstudy_pro\WWW\sqllab\Less-1\index.php靶场第一关的源码改一下,添加如下图内容。
目的:展示出靶场后台实际执行的SQL语句,方便我们分析。
在这里插入图片描述

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

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

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

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

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

在这里插入图片描述在这里插入图片描述

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

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

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

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

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

在这里插入图片描述在这里插入图片描述

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

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

在这里插入图片描述在这里插入图片描述

分析与总结:

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

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




参考链接:

https://www.cnblogs.com/impulse-/p/13184023.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值