SQL注入

所谓SQL注入,是将恶意SQL命令通过某种方式提交到服务器后台,并欺骗服务器执行这些恶意的SQL命令的一种攻击方式。 —— [ 百度百科 ]

造成SQL注入漏洞原因有两个:一个是没有对输入的数据进行过滤(过滤输入),还有一个是没有对发送到数据库的数据进行转义(转义输出)。

一些寻找SQL漏洞的方法

http://host/test.php?id=100 and 1=1        //返回成功
http://host/test.php?id=100 and 1=2 //返回失败
http://host/test.php?name=rainman ‘ and ‘1’=‘1 //返回成功
http://host/test.php?name=rainman ‘ and ‘1’=‘2 //返回失败
http://host/test.php?name=rainman ‘ and ‘1’=‘2 )) //使用括号进行语句闭合 //在具有模糊搜索的地方
1)先搜索('),如果出错,说明90%存在这个漏洞。
2)然后搜索(%),如果正常返回,说明95%有洞了。
3)然后再搜索一个关键字,比如(2006)吧,正常返回所有2006相关的信息。
4)再搜索(2006%'and 1=1 and '%'=')和(2006%'and 1=2 and '%'=')。 //看看能否绕过验证
(1) 用户名输入: ‘or 1=1 or’ 密码:任意
(2) Admin’ -- (或’or 1=1 or’ --)(admin or 1=1 --) (MSSQL)(直接输入用户名,不进行密码验证)
(3) 用户名输入:admin 密码输入:’ or ‘1’=‘1 也可以
(4) 用户名输入:admin' or 'a'='a 密码输入:任意
(5) 用户名输入:’ or 1=1 --
(6) 用户名输入:admin’ or 1=1 -- 密码输入:任意
(7) 用户名输入:1'or'1'='1'or'1'='1 密码输入:任意 //不同的SQL服务器连结字符串的语法不同,比如MS SQL Server使用符号+来连结字符串,而Oracle使用符号||来连结
http://host/test.jsp?ProdName=Book’ //返回错误
http://host/test.jsp?ProdName=B’+’ook //返回正常
http://host/test.jsp?ProdName=B’||’ook //返回正常说明有SQL注入
如果应用程序已经过滤了’和+等特殊字符,我们仍然可以在输入时过把字符转换成URL编码(即字符ASCII码的16进制)来绕过检查。

防御SQL注入

  • 对输入进行过滤;
  • 使用预编译的SQL语句,比如Java中的PreparedStatement;
  • 使用存储过程(不是所有场景都使用,这个方法不是很推荐);
  • MyBatis的SQL注入防护—模糊查询
-- MySQL
select * from table where name like concat('%',#{name},'%')
-- Oracle
select * from table where name like '%' || #{name} || '%'
-- SQL Server
select * from table where name like '%'+#{name}+'%'
-- DB2
select * from table where name like concat('%',#{name},'%')

SQL注入相关的优秀博客

XML注入

什么是XML注入

XML的设计宗旨是传输数据,而非显示数据。XML注入是一种古老的技术,通过利用闭合标签改写XML文件实现的。

下面举个最简单的例子

<?xml version="1.0" encoding="utf-8"?>
<USER>
<user Account="admin">用户输入</user>
<user Account="root">root</user>
</USER>

若攻击者刚好能掌控用户输入字段,输入 adminhacker ,最终修改结果为:

<?xml version="1.0" encoding="utf-8" ?>
<USER>
<user Account="admin">admin</user>
<user Account="hacker">hacker</user>
<user Account="root">root</user>
</USER>

这样我们可以通过XML注入添加一个管理员账户。

预防XML注入

  • 对有改变XML结构的特殊输入进行过滤或者编码;
  • 对["&","<",">","'".'"',"/"]这些特殊字符过滤。

JSON注入

什么是JSON注入

我们知道JSON是根据引号(")、冒号(

【网络安全】SQL注入、XML注入、JSON注入和CRLF注入科普文的更多相关文章

  1. WEB安全第五篇--其他注入的奇技淫巧:XML注入、Xpath注入、Json注入、CRLF注入

    零.前言 最近做专心web安全有一段时间了,但是目测后面的活会有些复杂,涉及到更多的中间件.底层安全.漏洞研究与安全建设等越来越复杂的东东,所以在这里想写一个系列关于web安全基础以及一些讨巧的pay ...

  2. XML外部实体(XXE)注入详解

    ###XML与xxe注入基础知识 1.XMl定义 XML由3个部分构成,它们分别是:文档类型定义(Document Type Definition,DTD),即XML的布局语言:可扩展的样式语言(Ex ...

  3. Spring Framework------>version4.3.5.RELAESE----->Reference Documentation学习心得----->使用spring framework的IoC容器功能----->方法一:使用XML文件定义beans之间的依赖注入关系

    XML-based configuration metadata(使用XML文件定义beans之间的依赖注入关系) 第一部分 编程思路概述 step1,在XML文件中定义各个bean之间的依赖关系. ...

  4. [.NET] 使用Json.NET提供依赖注入功能(Dependence Injection)

    [.NET] 使用Json.NET提供依赖注入功能(Dependence Injection) 前言 在一些小型项目的开发情景里,系统不需要大型DI Framework所提供的:单一对象生成.生命周期 ...

  5. 《11招玩转网络安全》之第五招:DVWA命令注入

    首先还是将DVWA的安全级别设置为Low,然后单击DVWA页面左侧的Command Injection按钮. ​ 图5-1  Low级别的命令注入 这个就是最典型的命令注入接口.在文本框中输入一个IP ...

  6. spring3: 依赖和依赖注入-xml配置-DI的配置

    3.1.1  依赖和依赖注入 传统应用程序设计中所说的依赖一般指“类之间的关系”,那先让我们复习一下类之间的关系: 泛化:表示类与类之间的继承关系.接口与接口之间的继承关系: 实现:表示类对接口的实现 ...

  7. Bean XML 配置(3)- 依赖注入配置

    Spring 系列教程 Spring 框架介绍 Spring 框架模块 Spring开发环境搭建(Eclipse) 创建一个简单的Spring应用 Spring 控制反转容器(Inversion of ...

  8. IoC容器-Bean管理XML方式(创建对象和set注入属性,有参构造注入属性)

    Ioc操作Bean管理 1,什么是Bean管理 (0)Bean管理指的是两个操作 (1)Spring创建对象 (2)Spring注入属性 2,Bean管理操作有两种方式 (1)基于xml配置文件方式实 ...

  9. Spring注入值得2种方式:属性注入和构造注入

    Spring是一个依赖注入(控制反转)的框架,那么依赖注入(标控制反转)表现在那些地方了? 即:一个类中的属性(其他对象)不再需要手动new或者通过工厂方法进行创建,而是Spring容器在属性被使用的 ...

随机推荐

  1. [LeetCode] 面试题之犄角旮旯 第叁章

    题库:LeetCode题库 - 中等难度 习题:网友收集 - zhizhiyu 此处应为一个简单的核心总结,以及练习笔记. 查找一个数“在不在”?桶排序理论上貌似不错. 回文问题 ----> [ ...

  2. JQuery学习笔记之手网琴效果

    这种东西在网上多的是,最近在学JQuery,所以就写了个随笔 <!DOCTYPE html> <html lang="en"> <head> & ...

  3. 2018年蓝桥杯java b组第六题

    标题:递增三元组 给定三个整数数组A = [A1, A2, ... AN], B = [B1, B2, ... BN], C = [C1, C2, ... CN],请你统计有多少个三元组(i, j, ...

  4. 程序员写 2000 行 if else?领导:这个锅我不背

    前言 知乎上有小伙伴提了这么一个问题,如何看待陕西省普通话水平测试成绩查询系统?查询系统前端代码就直接给出了身份账号,姓名,证书编号,如果信息是真的,就泄露了这么多考生的信息,白给那种.为什么会发生这 ...

  5. CF #579 (Div. 3) C.Common Divisors

    C.Common Divisors time limit per test2 seconds memory limit per test256 megabytes inputstandard inpu ...

  6. python + selenium 环境搭建及问题

    搭建平台windows 准备工具如下: ------------------------------------------------------------- 下载python https://w ...

  7. WebGL简易教程(六):第一个三维示例(使用模型视图投影变换)

    目录 1. 概述 2. 示例:绘制多个三角形 2.1. Triangle_MVPMatrix.html 2.2. Triangle_MVPMatrix.js 2.2.1. 数据加入Z值 2.2.2. ...

  8. Vagrant定制个性化CentOS7虚拟机模板

    关于虚拟机模板 想用vagrant搭建hadoop集群,要完成以下准备工作: 三个虚拟机实例操作系统都是CentOS7的server版: 每个实例都要安装同样的应用.关闭防火墙.关闭swap等: 今天 ...

  9. Android中内存泄露与如何有效避免OOM总结

    一.关于OOM与内存泄露的概念 我们在Android开发过程中经常会遇到OOM的错误,这是因为我们在APP中没有考虑dalvik虚拟机内存消耗的问题. 1.什么是OOM OOM:即OutOfMemoe ...

  10. oracle表空间不足:ORA-01653: unable to extend table

    问题背景: oracle表空间不足报错是比较常见的故障,尤其是没有对剩余表空间做定期巡检的系统: 报错代码如下: oracle表空间不足错误代码:ORA-01653: unable to extend ...