什么是SQL:
结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
什么是SQL注入:
SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。
SQL注入的原理:
用户可以通过Get或Post等方式,对服务器发出HTTP请求,而服务器端会对数据库执行查询操作,将查询的结果返回浏览器端。黑客利用上述过程,将精心构造的请求放到传入的变量参数中,让服务器端执行恶意代码,从而达到了读取数据库中敏感信息的效果,甚至将数据库删除,这一攻击过程就是SQL注入。
SQL注入漏洞产生的条件:
- 参数是用户可控的
- 传入的参数拼接到SQL语句,并带入数据库查询
SQL注入的危害:
- 数据库敏感信息泄露
- 页面被窜改
- 数据库被恶意操作
- 服务器被远程控制
SQL注入类型:
- Union注入
- Boolean注入
- 报错注入
- 时间注入
- 堆叠查询注入
- 二次注入
- 宽字节注入
- cookie注入
- base64注入
- XFF注入
- 大小写绕过注入
- 双写绕过注入
- 编码绕过注入
- 内联注释绕过注入
当然了,上面的只是随意列举,我在网上也了解到了一些SQL注入类型的分类方式,如果有什么搞错了的,日后再来更正吧。SQL注入有很多种分类方式,比如按注入点类型分类(数字型,字符型,搜索型),按数据提交的方式分类(GET,POST,Cookie,HTTP头部),以及按执行效果分类(基于布尔的盲注,基于时间的盲注,基于报错注入)
想要进一步去运用SQL注入实战的可以看我的另一篇博客:
https://blog.csdn.net/weixin_45254208/article/details/105046357