linux json 写sql注入,【网络安全】SQL注入、XML注入、JSON注入和CRLF注入科普文

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文件实现的。

下面举个最简单的例子

用户输入

root

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

admin

hacker

root

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

预防XML注入

对有改变XML结构的特殊输入进行过滤或者编码;

对["&","","'".'"',"/"]这些特殊字符过滤。

JSON注入

什么是JSON注入

我们知道JSON是根据引号(")、冒号(WEB安全第五篇--其他注入的奇技淫巧:XML注入、Xpath注入、Json注入、CRLF注入

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

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

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

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

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

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

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

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

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

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

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

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

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

Spring依赖注入的Setter注入(通过get和set方法注入)

Spring依赖注入的Setter注入(通过get和set方法注入) 导入必要的jar包(Spring.jar和commonslogging.jar) 在src目录下建立applicationCont ...

随机推荐

Android 强烈推荐:程序员接私活那点事

今天周末在家宅着,并不是我不想运动,是因为北京的雨雪交加导致我想在家写文章,不过想想给大家写文章还是蛮惬意的,望一眼窗外,看一眼雪景,指尖在键盘上跳动,瞬间有种从屌丝程序员转变成了小姑娘们都羡慕的文艺 ...

BLE链路层状态机

BLE的Link层,应当是了解BLE需要首先熟悉的一部分,BLE的Controller部分主要都在围绕这一部分实现的.Link层的内容规定了BLE底层是怎么实现蓝牙设备之间的控制,数据传输等等的.Li ...

Fiddler对安卓应用手机抓包图文教程

http://www.cr173.com/html/37625_1.html 做开发需要抓取手机app的http/https的数据包,想看APP发出的http请求和响应是什么,这就需要抓包了,这可以得 ...

通讯录C++console application

#include #include #include #include #inc ...

【SQL注入】mysql中information_schema详解

在MySQL中,把 information_schema 看作是一个数据库,确切说是信息数据库.其中保存着关于MySQL服务器所维护的所有其他数据库的信息.如数据库名,数据库的表,表栏的数据类型与访问 ...

基于Metronic的Bootstrap开发框架--工作流模块功能介绍(2)

本篇继续,继续介绍基于Metronic的Bootstrap开发框架的工作模块功能,介绍工作流模块中相关业务表单的界 ...

Docker学习笔记-Docker for Windows 安装

前言: 环境:windows10专业版 64位 正文: 官方下载地址:https://hub.docker.com/editions/community/docker-ce-desktop-windo ...

Oracle date 详解

oracle 数据类型详解---日期型 oracle数据类型看起来非常简单,但用起来会发现有许多知识点,本文是我对ORACLE日期数据类型的一些整理,都是开发入门资料,与大家分享:注:由于INTERV ...

Eclipse 不能build, pom文件上面有叉叉 解决办法

Error message:   [html] view plaincopy execution not covered by lifecycle configuration: org.apache. ...

MySQL 字符串拼接

MySQL 字符串拼接 在Mysql 数据库中存在两种字符串连接操作.具体操作如下 1. CONCAT(string1,string2,…)   说明 : string1,string2代表字符串,c ...

你可能感兴趣的:(linux,json,写sql注入)