SQL注入漏洞之SQL注入基础知识点 如何检测是否含有sql注入漏洞
目录
什么是SQL注入
简单来说就是:
查找注入点:
基本流程
SQL 注入基础知识
URL编码
工具:
URL种得空格处理:
SQL注入点检测方式
引号注入检测SQL注入点
单引号双引号
什么是SQL注入
-
SQL注入攻击漏洞的原因,是由于程序员在编写Web程序时:
-
没有对客户端(比如浏览器等)提交的参数进行严格的过滤和判断。
-
用户可以修改参数或数据
并传递至服务器端
导致服务端拼接了伪造的SQL查询语句---服务端连接数据库
-
并将伪造的sql语句发送给数据库服务端执行
数据库将sql语句的执行结果
返回给了服务端
服务端又将结果返回给了客户端
-
从而获取到敏感信息,甚至执行危险的代码或系统命令
简单来说就是:
-
注入产生的原因是接受相关参数未经处理直接带入数据库查询操作
查找注入点:
-
前端页面上所有提交数据的地方
不管是登录、注册、留言板、评论区、分页等等地方
只要是提交数据给后台,后台拿着该数据和数据库交互了
那么这个地方就可能存在注入点
基本流程
SQL 注入基础知识
URL编码
-
url编码是一种浏览器用来打包表单输入的格式。
- 浏览器从表单中获取所有的name和其中的值 ,将它们以name/value参数编码(移去那些不能传送的字符,将数据排行等等)作为URL的一部分或者分离地发给服务器
- 不管哪种情况,在服务器端的表单输入格式样子像这样:
-
当 URL 路径或者查询参数中,带有中文或者特殊字符的时候,就需要对 URL 进行编码
- 采用ASCII十六进制编码格式)
- URL 编码的原则是使用安全字符去表示那些不安全的字符
-
安全字符,指的是没有特殊用途或者特殊意义的字符
- Key=Value
- Ascill编码转转化成对应得数字
工具:
- 小葵工具 URL编码 也可以存在于在线编码格式
URL种得空格处理:
- 在URL中出现空格以+得方式来处理 URL get请求不能出现空格
- Get UIL种 不能使用#号 只能使--注释符号+--
SQL注入点检测方式
引号注入检测SQL注入点
单引号双引号
引号测试,加了引号如果报错,证明存在注入点
- 引号在加编码 绕过waf机制
- 单引号闭合数据:$query="select id,email from member where username='vince' ";
- 用单引号测试,会报错,双引号测试查不到数据,不报错
双引号闭合数据:$query='select id,email from member where username="vince"'; 用
- 双引号测试,会报错,单引号测试查不到数据,不报错
or 1=1 一个条件为真,即为真,真的效果就是查询到表中所有数据
- where id=1 and 1=1 两个条件为真才为真
- 查询结果和不加1=1一样,and 1=2 一个条件为假
- 即为假,查询条件为假,什么数据也没有,两个结合起来可以判断是否存在注入点
喜欢本文的请动动小手点个赞,收藏一下,有问题请下方评论,转载请注明出处,并附有原文链接,谢谢!如有侵权,请及时联系。