一、sql注入原理

注入攻击的本质就是把用户输入的数据当作代码来执行。所以注入攻击有两个必要条件

1.用户能够控制的输入。

2.原本程序要执行的代码,拼接了用户输入的数据。

二、sql注入分类

按照请求方法可以分为:GET请求、POST请求

按照参数类型可以分为:数字型、字符型

按照数据返回结果分为:回显、报错、盲注

盲注又分为:布尔盲注、延时盲注

三、sql注入测试方法

一般测试语句:

or 1=1 --+ 'or 1=1 --+ "or 1=1 --+
)or 1=1 --+ ')or 1=1 --+ ")or 1=1--+
"))or 1=1 --+    

ps: #  url编码后为 %23 ,可以用 --+ 替换

常用测试函数:

函数名 作用
version() 数据库版本
user() 数据库用户名
database() 数据库名
@@datadir() 数据库路径
@@version_compile_os 操作系统版本

测试流程:

这里是在本地搭建的一个 sqli 的靶场,用来自己做练习,感觉还不错。

文章最后附带的有链接,小伙伴们可以自行下载。

1.检测sql注入类型

直接在url处添加 单引号 发现网站报错、说明sql语句出错,就可能存在注入

2.闭合sql语句

  一般有两种方法:

  a.使用 # 号,把本行 # 号后面的内容注释调,这样就可以避免sql语句出错,使我们构造的 payload 可以正确执行

  b.根据sql语句,用符号进行闭合

这里就直接用 # 进行注释了,可以看到网站的页面回复了正常

3.探测字段列数

假设列数为 4 进行测试,页面出错,说明小于 4 列

然后列数为 3 进行测试,页面正常,说明存在 3 列

4.查看显示位,进行测试

可以看到数据库的版本信息,说明存在sql注入漏洞

四、sql注入防护技巧

数据与代码分离

对用户输入的数据进行严格过滤

对特殊字符进行转义

使用预编译语句

使用安全函数

检查数据类型

sql注入原理,利用与防护的更多相关文章

  1. Web安全之SQL注入(原理,绕过,防御)

    首先了解下Mysql表结构 mysql内置的information_schema数据库中有三个表非常重要1 schemata:表里包含所有数据库的名字2 tables:表里包含所有数据库的所有的表,默 ...

  2. Java程序员从笨鸟到菜鸟之(一百)sql注入攻击详解(一)sql注入原理详解

    前段时间,在很多博客和微博中暴漏出了12306铁道部网站的一些漏洞,作为这么大的一个项目,要说有漏洞也不是没可能,但其漏洞确是一些菜鸟级程序员才会犯的错误.其实sql注入漏洞就是一个.作为一个菜鸟小程 ...

  3. sql注入原理详解(一)

    我们围绕以下几个方面来看这个问题: 1.什么是sql注入? 2.为什么要sql注入? 3.怎样sql注入? 1.什么是sql注入? 所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或 ...

  4. 1.sql注入原理

    一.什么是sql注入呢?         所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,比如先前的很多影视网站泄露V ...

  5. SQL注入原理与解决方法代码示例

    一.什么是sql注入? 1.什么是sql注入呢? 所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,比如先前的很多影视网 ...

  6. 讲sql注入原理的 这篇不错(有空可以看看)

    我们围绕以下几个方面来看这个问题: 1.什么是sql注入? 2.为什么要sql注入? 3.怎样sql注入? 1.什么是sql注入? 所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或 ...

  7. SQL注入原理讲解,很不错!

    SQL注入原理讲解,很不错! 原文地址:http://www.cnblogs.com/rush/archive/2011/12/31/2309203.html 1.1.1 摘要 日前,国内最大的程序员 ...

  8. SQL注入原理及代码分析(一)

    前言 我们都知道,学安全,懂SQL注入是重中之重,因为即使是现在SQL注入漏洞依然存在,只是相对于之前现在挖SQL注入变的困难了.而且知识点比较多,所以在这里总结一下.通过构造有缺陷的代码,来理解常见 ...

  9. SQL注入原理及代码分析(二)

    前言 上一篇文章中,对union注入.报错注入.布尔盲注等进行了分析,接下来这篇文章,会对堆叠注入.宽字节注入.cookie注入等进行分析.第一篇文章地址:SQL注入原理及代码分析(一) 如果想要了解 ...

随机推荐

  1. 基于Visual Studio Code搭建Vue开发环境

    安装node.js最新版 这里安装的是8.11.4版   image.png 更新npm至最新版 安装node.js后, npm默认版本为: 6.1.0   image.png 使用npm insta ...

  2. Asp.net SignalR 实现服务端消息实时推送到所有Web端

    ASP .NET SignalR是一个ASP .NET 下的类库,可以在ASP .NET 的Web项目中实现实时通信.实际上 Asp.net SignalR 2 实现 服务端消息推送到Web端, 更加 ...

  3. Mybatis映射文件sql语句注意事项

    1.插入

  4. Oracle(11g)详细安装步骤

     最详细的Oracle安装步骤就在这里,话不多说直接给大家上安装Oracle的详细教程  如果没有安装包,可以先点击下载下载地址:http://download.oracle.com/otn/nt/o ...

  5. Windows下jmap命令报错问题

       最近换了笔记本,新的工作环境下jmap命令居然在报错,而jps.jstat.jinfo.jstack都能正常使用,所以初步排除进程号的问题. Attaching to core 17536 fr ...

  6. # VsCode 配置C++调试运行

    VsCode 配置C++调试运行 打开命令面板快捷键为F1,软件上写的Ctrl+Shift+P似乎没用 先安装插件使得可以运行 先自行在vsc扩展中搜索C++安装C/C++插件 再参考知乎专栏中安装c ...

  7. golang中switch用法细节

    1. switch穿透-fallthrough, 如果在case语句块后增加fallthrough,则会继续执行下一个case,也叫switch穿透,默认只穿透一层 2. Type Switch: s ...

  8. RHadoop: REDUCE capability required is more than the supported max container capability in the cluster

    I have not used RHadoop. However I've had a very similar problem on my cluster, and this problem see ...

  9. Nginx学习笔记(三):Nginx 请求处理

    Request Nginx 中的 ngx_http_request_t 是对一个 http 请求的封装: 一个 http 请求包含:请求行.请求头.请求体,响应行.响应头.响应体 Nginx 处理请求 ...

  10. java类的访问修饰符

    1.java中外部类的访问修饰符有如下四种: public,默认,abstract,final // public,默认,abstract,final. public class Test1 {} c ...