我们先从字面意思去理解,SQL是一种数据库查询语言,他是用来与数据库交互的语言,而注入就是向内部强行添加内容,他们组合起来,就是在SQL语句中强行注入任意内容,这些内容可能是数据,也可能是一串恶意的SQL语句,而攻击者就可以通过这些强行注入的数据或代码,去执行一些恶意的行为。用专业的话来描述就是,应用程序在向后台数据库传递SQL语句时,攻击者在传递SQL语句之前, 找到SQL注入点,并修改了这条SQL,从而实现攻击者间接操作数据库,得到本不能得到的数据或者其他操作。
SQL注入的可怕之处在于它能够对数据库执行大量的非授权操作,从而给个人和组织造成严重损害。这种攻击手段在很多方面都能造成影响:
笼统的说sql注入存在于,一切与数据库交互的输入输出点。但是sql注入一把会存在以下几点中;
URL参数:这种是针对与get方法,有很多数据库都是通过get方法去传递sql的关键值,它是一种不安全的方式
HTTP头部:在头部中的 User Again、Referer、Cookie中都有与数据库直接交互的点
HTML表单:HTML表单中大多数情况是以POST方法传递参数,但是攻击者如果使用抓包工具(bp)抓包分析,也可以轻而易举是进行注入攻击
在SQL中,数据类型主要可分为数值型和字符型。识别这两者有助于我们了解可能出现的SQL注入类型。以下是对两者的解析和使用场景。
数值型数据用于存储各种数值,如整数、浮点数和小数。例如,MySQL支持INT
(整数)、FLOAT
(浮点数)、DOUBLE
(双精度浮点数)和DECIMAL
(小数)等。
数值型数据在SQL语句中不需要引号:
SELECT * FROM table WHERE id=1;
这里,id=1
指明了一个数值型条件。SQL的WHERE
子句进行布尔判断,如果条件成立(真),则返回查询结果。例如,如果字段id
包含值1
,查询将返回相应的记录。
数值型数据可以进行数学运算,例如:
SELECT * FROM table WHERE id=1/1; -- 除法
SELECT * FROM table WHERE id=1*1; -- 乘法
SELECT * FROM table WHERE id=1+0; -- 加法
SELECT * FROM table WHERE id=2-1; -- 减法
字符型数据主要用于存储文本和字符串,例如用户名或电子邮件地址。常见的字符型数据类型包括CHAR
、VARCHAR
、TEXT
和BLOB
。
字符型数据需要用引号括起来,这有助于精确解析SQL语句并提高执行效率。例如:
SELECT * FROM table WHERE name='John';
在SQL查询中,虽然字符型数据在底层有数值编码(如ASCII或UTF-8),但常用的是专门的字符串操作和函数。与数值型数据类似,WHERE
子句也用于布尔判断。
SQL补充知识
在SQL中还有三个用于逻辑计算的关键字,他们分别为
OR
、AND
、NOT
, 是用于组合或修改WHERE
子句中条件的逻辑运算符。
OR
逻辑判断为或
,
- 运算符用于满足任意一个或多个条件的情况。只要其中一个条件为真,整个表达式就会返回真。
- 当第一个条件为真时,就不会在判断第二个条件
AND
逻辑判断为与
- 运算符用于同时满足两个或多个条件的情况。只有所有条件都为真时,整个表达式才会返回真。
NOT
逻辑判断为非
NOT
运算符用于反转条件的结果。如果条件为真,NOT
会使其变为假,反之亦然。NOT
与!=
、<>
不一样,NOT
为逻辑判断,而后者为数学概念中的不等于在使用这三个逻辑判断符时,要注意的是
NOT
的优先级是最高的,AND
的优先级第二,OR
的优先级最低,在使用多重判断时,可以添加()
来明确地指定运算的优先级
寻找SQL注入漏洞通常涉及对目标应用程序的多方面分析,以下是一些常用的方法:
这是最直观的方式,直接在输入框或URL参数中插入特殊字符(例如单引号 '
),看是否有异常响应或者错误信息,这样可以初步判断是否存在SQL注入点。
有些Web页面在出现SQL错误时会直接把错误信息展示给用户。这样的错误信息通常会泄露数据库的结构或者查询的细节,这给攻击者提供了有价值的信息。
例如,在输入框输入 test' OR '1'='1
,如果应用没有做适当的处理,可能会触发数据库的报错信息。
观察应用程序在不同输入情况下的行为变化。如果输入特殊字符或构造特定的SQL查询片段导致应用程序行为明显不同,也可能是SQL注入的迹象。
在某些情况下,应用程序并不会直接显示错误信息,这时可以尝试使用布尔盲注或时间盲注等高级技术来判断是否存在SQL注入点。
布尔盲注:构造特定的SQL查询,使应用在查询结果为真或假时有不同的反应。
例如,输入 admin' AND 1=1--
和 admin' AND 1=2--
,观察应用程序的反应是否不同。
时间盲注:通过构造使数据库延迟响应的SQL查询,来判断是否存在SQL注入。
例如,输入 admin' OR IF(1=1, SLEEP(5), 0)--
,如果数据库延迟了5秒才响应,那就可能存在SQL注入。
理解SQL注入的重要性是提高自己编程技能和网络安全意识的关键一步。我计划通过使用SQLi靶场,一个为学习和实验设计的安全环境,逐步扩展对SQL注入的了解。这将使我有机会亲手尝试各种SQL注入攻击方法,并深入了解如何防范这些风险。这样的实践经验对我来说是宝贵的,它不仅能提高我的编程能力,还能帮助我建立健全的网络安全观念。通过这种方式,我期望能够更全面地掌握SQL注入,从而在未来的编程路上更加稳健和安全。
文章浏览阅读1.6k次。安装配置gi、安装数据库软件、dbca建库见下:http://blog.csdn.net/kadwf123/article/details/784299611、检查集群节点及状态:[root@rac2 ~]# olsnodes -srac1 Activerac2 Activerac3 Activerac4 Active[root@rac2 ~]_12c查看crs状态
文章浏览阅读1.3w次,点赞45次,收藏99次。我个人用的是anaconda3的一个python集成环境,自带jupyter notebook,但在我打开jupyter notebook界面后,却找不到对应的虚拟环境,原来是jupyter notebook只是通用于下载anaconda时自带的环境,其他环境要想使用必须手动下载一些库:1.首先进入到自己创建的虚拟环境(pytorch是虚拟环境的名字)activate pytorch2.在该环境下下载这个库conda install ipykernelconda install nb__jupyter没有pytorch环境
文章浏览阅读5.2k次,点赞19次,收藏28次。选择scoop纯属意外,也是无奈,因为电脑用户被锁了管理员权限,所有exe安装程序都无法安装,只可以用绿色软件,最后被我发现scoop,省去了到处下载XXX绿色版的烦恼,当然scoop里需要管理员权限的软件也跟我无缘了(譬如everything)。推荐添加dorado这个bucket镜像,里面很多中文软件,但是部分国外的软件下载地址在github,可能无法下载。以上两个是官方bucket的国内镜像,所有软件建议优先从这里下载。上面可以看到很多bucket以及软件数。如果官网登陆不了可以试一下以下方式。_scoop-cn
文章浏览阅读4.5k次,点赞2次,收藏3次。首先要有一个color-picker组件 <el-color-picker v-model="headcolor"></el-color-picker>在data里面data() { return {headcolor: ’ #278add ’ //这里可以选择一个默认的颜色} }然后在你想要改变颜色的地方用v-bind绑定就好了,例如:这里的:sty..._vue el-color-picker
文章浏览阅读640次。基于芯片日益增长的问题,所以内核开发者们引入了新的方法,就是在内核中只保留函数,而数据则不包含,由用户(应用程序员)自己把数据按照规定的格式编写,并放在约定的地方,为了不占用过多的内存,还要求数据以根精简的方式编写。boot启动时,传参给内核,告诉内核设备树文件和kernel的位置,内核启动时根据地址去找到设备树文件,再利用专用的编译器去反编译dtb文件,将dtb还原成数据结构,以供驱动的函数去调用。firmware是三星的一个固件的设备信息,因为找不到固件,所以内核启动不成功。_exynos 4412 刷机
文章浏览阅读2w次,点赞24次,收藏42次。Linux系统配置jdkLinux学习教程,Linux入门教程(超详细)_linux配置jdk
文章浏览阅读3.3k次,点赞5次,收藏19次。xlabel('\delta');ylabel('AUC');具体符号的对照表参照下图:_matlab微米怎么输入
文章浏览阅读119次。顺序读写指的是按照文件中数据的顺序进行读取或写入。对于文本文件,可以使用fgets、fputs、fscanf、fprintf等函数进行顺序读写。在C语言中,对文件的操作通常涉及文件的打开、读写以及关闭。文件的打开使用fopen函数,而关闭则使用fclose函数。在C语言中,可以使用fread和fwrite函数进行二进制读写。 Biaoge 于2024-03-09 23:51发布 阅读量:7 ️文章类型:【 C语言程序设计 】在C语言中,用于打开文件的函数是____,用于关闭文件的函数是____。
文章浏览阅读3.4k次,点赞2次,收藏13次。跟随鼠标移动的粒子以grid(SOP)为partical(SOP)的资源模板,调整后连接【Geo组合+point spirit(MAT)】,在连接【feedback组合】适当调整。影响粒子动态的节点【metaball(SOP)+force(SOP)】添加mouse in(CHOP)鼠标位置到metaball的坐标,实现鼠标影响。..._touchdesigner怎么让一个模型跟着鼠标移动
文章浏览阅读178次。项目运行环境配置:Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。项目技术:Springboot + mybatis + Maven +mysql5.7或8.0+html+css+js等等组成,B/S模式 + Maven管理等等。环境需要1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。_基于java技术的停车场管理系统实现与设计
文章浏览阅读3.5k次。前言对于MediaPlayer播放器的源码分析内容相对来说比较多,会从Java-&amp;gt;Jni-&amp;gt;C/C++慢慢分析,后面会慢慢更新。另外,博客只作为自己学习记录的一种方式,对于其他的不过多的评论。MediaPlayerDemopublic class MainActivity extends AppCompatActivity implements SurfaceHolder.Cal..._android多媒体播放源码分析 时序图
文章浏览阅读2.4k次,点赞41次,收藏13次。java 数据结构与算法 ——快速排序法_快速排序法