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注入原理及代码分析(一) 如果想要了解 ...
随机推荐
- 如何去除PATH里的重复项并排序
注意sed的用法,linux和Mac os不同,linux是Gnu的,Mac是BSD的 PATH排序去掉重复内容 mac和linux的换行符替换方法不一样,如下是Mac下的操作 export PATH ...
- 机器学习第一章——NFL的个人理解
第一篇博客,想给自己的学习加深记忆.看到书中第一个公式时,本来想直接看证明结果就好,然鹅...作者在备注上写:这里只用到一些非常基础的数学知识,只准备读第一章且有“数学恐惧”的读者可跳过...嘤嘤嘤, ...
- 高级UI-DrawerLayout侧滑
侧滑的方案有很多种,早期的开源SliddingMenu,以及后来的DrawerLayout以及NavigationView等都可实现侧滑效果,这里介绍的是DrawerLayout,下一节将介绍Navi ...
- 超级块,i节点,数据块,目录块,间接块
一.物理磁盘到文件系统 文件系统用来存储文件内容,文件属性,和目录,这些类型的数据如何存储在磁盘块上的呢?Unix/linux使用了一个简单的方法. 他将磁盘分为3个部分: 超级块,文件系统中第一个块 ...
- Noip2013(普及组) 车站分级
题目描述 一条单向的铁路线上,依次有编号为 , , …, n 的 n 个火车站.每个火车站都有一个级别,最低为 级.现有若干趟车次在这条线路上行驶,每一趟都满足如下要求:如果这趟车次停靠了火车站 x, ...
- html5 table的表头固定的HTML代码
table的表头固定的HTML代码 <!DOCTYPE html> <html> <head lang="en"> <meta chars ...
- 记一次Spring Cloud压力测试
前言 公司打算举办一场活动,现场参与活动人数比较多.针对于可能访问比较密集的接口进行压力测试.使用jmeter进行测试,请求并发稍微多些,系统就会挂起. 针对压力测试出现的问题,因为并发超过1秒钟10 ...
- Ural 1029 Ministry 题解
目录 Ural 1029 Ministry 题解 题意 题解 程序 Ural 1029 Ministry 题解 题意 给定一个\(n\times m(1\le n \le10,1\le m \le50 ...
- ThinkPHP读取配置信息
use think\Config; dump(Config::get()); // 或者 dump(config());示例:dump(Config::get('database.database') ...
- 一个农民工自学java找到工作的励志故事
<!-----------------------------------------------------------------------------摘自网络-------------- ...