sql注入原理,利用与防护
一、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注入原理,利用与防护的更多相关文章
- Web安全之SQL注入(原理,绕过,防御)
首先了解下Mysql表结构 mysql内置的information_schema数据库中有三个表非常重要1 schemata:表里包含所有数据库的名字2 tables:表里包含所有数据库的所有的表,默 ...
- Java程序员从笨鸟到菜鸟之(一百)sql注入攻击详解(一)sql注入原理详解
前段时间,在很多博客和微博中暴漏出了12306铁道部网站的一些漏洞,作为这么大的一个项目,要说有漏洞也不是没可能,但其漏洞确是一些菜鸟级程序员才会犯的错误.其实sql注入漏洞就是一个.作为一个菜鸟小程 ...
- sql注入原理详解(一)
我们围绕以下几个方面来看这个问题: 1.什么是sql注入? 2.为什么要sql注入? 3.怎样sql注入? 1.什么是sql注入? 所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或 ...
- 1.sql注入原理
一.什么是sql注入呢? 所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,比如先前的很多影视网站泄露V ...
- SQL注入原理与解决方法代码示例
一.什么是sql注入? 1.什么是sql注入呢? 所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,比如先前的很多影视网 ...
- 讲sql注入原理的 这篇不错(有空可以看看)
我们围绕以下几个方面来看这个问题: 1.什么是sql注入? 2.为什么要sql注入? 3.怎样sql注入? 1.什么是sql注入? 所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或 ...
- SQL注入原理讲解,很不错!
SQL注入原理讲解,很不错! 原文地址:http://www.cnblogs.com/rush/archive/2011/12/31/2309203.html 1.1.1 摘要 日前,国内最大的程序员 ...
- SQL注入原理及代码分析(一)
前言 我们都知道,学安全,懂SQL注入是重中之重,因为即使是现在SQL注入漏洞依然存在,只是相对于之前现在挖SQL注入变的困难了.而且知识点比较多,所以在这里总结一下.通过构造有缺陷的代码,来理解常见 ...
- SQL注入原理及代码分析(二)
前言 上一篇文章中,对union注入.报错注入.布尔盲注等进行了分析,接下来这篇文章,会对堆叠注入.宽字节注入.cookie注入等进行分析.第一篇文章地址:SQL注入原理及代码分析(一) 如果想要了解 ...
随机推荐
- CGAffineTransform的使用大概:
1. CoreGraphics框架中的CGAffineTransform类可用于设定UIView的transform属性,控制视图的缩放.旋转和平移操作: transform我们一般称为形变属性,其本 ...
- easyui datagrid设置一开始不加载数据
解决办法就是:一开始的url属性设置为空,例如: <table id="dg" title="用户管理" class="easyui-datag ...
- Azure AADSTS7000215 其中一种问题的解决
众所周知,Azure提供了整套的rest api,经过认证和授权,完美阐述了”我是谁,我能做什么“.对资源层的操作,我们很多时候是使用Powershell或者Azure CLI或者各个语言的SDK, ...
- Flutter 流式布局列表实例+上拉加载
页面变化的几种方式: 一.StatefulWidget的setState形式 先声明两个变量. ; List<Map> list = []; 写了一个方法,获取数据: void _getH ...
- 在Win7环境下搭建Geant4工作平台
本物理专业小硕,现在材料实验室工作,研究方向大概是核屏蔽材料的软件模拟吧.其实实验室里大多数师兄弟都是搞焊接的,平时能接触到这类直接给源码自己编译的软件的机会基本为零,所以一切都靠自己探索,成功搭建了 ...
- .git泄露及利用php弱类型松散比较构造json的payload
一道ctf题,文章搬运到了自己的网站上: http://101.132.137.140:202/archives/2019-11-16
- python安装第三方的包
转载自:http://blog.csdn.net/xyqzki/article/details/38414433 第一种基本安装方法 1 下载第三方包,解压 2 在命令提示符里输入cmd,然后用cd进 ...
- C语言程序设计II—第十一周教学
第十一周教学总结(6/5-12/5) 教学内容 本周的教学内容为:10.1 知识点:多个函数构成的程序结构.10.2 递归函数.10.3编译预处理概念,包括文件.宏的内容.10.4 多文件模块的学生信 ...
- hdoj3746(kmp算法的nex数组求最小循环节)
题目链接:https://vjudge.net/problem/HDU-3746 题意:给定一个字符串,问最少在两端添加多少元素使得整个字符串是呈周期性的. 思路: 应用到kmp中nex数组的性质,数 ...
- yii2中通过migration创建数据表
### yii2中通过migration创建数据表 准备工作: 1.首先保证php写入了环境变量 2.在项目内创建migrations目录(base版的需要手动创建) 3.配置文件中正确配置了数据库信 ...