栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

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

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_proWWWsqllabLess-1index.php靶场第一关的源码改一下,添加如下图内容。
目的:展示出靶场后台实际执行的SQL语句,方便我们分析。

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

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

URL:http://www.sqllab.com/Less-1/?id=-1’ union select 1,database(),3


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

URL:http://www.sqllab.com/Less-1/?id=-1’ union select 1,database(),3 %23

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

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

URL:http://www.sqllab.com/Less-1/?id=-1’ union select 1,database(),3 – (就是横杠横杠空格)


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

URL:http://www.sqllab.com/Less-1/?id=-1’ union select 1,database(),3 --+

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

URL:http://www.sqllab.com/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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/304646.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号