【网络安全】SQL注入、XML注入、JSON注入和CRLF注入科普文

文章来源地址:https://www.yii666.com/article/332841.html

目录
  • SQL注入
    • 一些寻找SQL漏洞的方法
    • 防御SQL注入
    • SQL注入相关的优秀博客
  • XML注入
    • 什么是XML注入
    • 预防XML注入
  • JSON注入
    • 什么是JSON注入
    • JSON注入的防御
  • CRLF注入
    • CRLF介绍
    • CRLF漏洞检测
    • CRLF漏洞预防

SQL注入

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

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

一些寻找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注入相关的优秀博客

  • https://blog.csdn.net/wutianxu123/article/details/82718718
  • https://blog.csdn.net/wutianxu123/article/details/82719212

XML注入

什么是XML注入

XML的设计宗旨是传输数据,而非显示数据。XML注入是一种古老的技术,通过利用闭合标签改写XML文件实现的。文章来源地址https://www.yii666.com/article/332841.html文章地址https://www.yii666.com/article/332841.html网址:yii666.com<

下面举个最简单的例子

<?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. ORACLE 中的一些特殊符号

    oracle通配符,运算符的使用 用于where比较条件的有: 等于:=、、=、、=、 包含:in、not in exists、not exists 范围:between...and、not between....and 匹配测试:like、not like Null测试:is null、is not null 布尔链接:and、or、not 通配符: 在where子句中,通配符可与like条件一起使用。在Oracle中:

  2. oracle 特殊符号

    http://hi.baidu.com/wind_stay/blog/item/85113a6f6553a5d680cb4a0e.htmloracle通配符,运算符的使用用于where比较条件的有:等于:=、、=、、=、包含:in、not in exists、not exists范围:between...and、not between....and匹配测试:like、not likeNull测试:is null、is not null布尔链接:and、or、not通配符:在where子句

  3. Oracle 常用符号CHR

    select  chr(92)||chr(102) from dual; f select  chr(92)||chr(110) from dual; nselect  chr(92)||chr(114) from dual; rselect  chr(92)||chr(116) from dual; tselect  chr(92)||chr(118) from dual; vb  退格符(Backspace)  0x08 f  换页符(Form Feed)  0x0cn  换行符(Line Feed)  0x0ar  回车符(Carriage Return)  0x0dt  水平

  4. oracle 特殊符号替换删除处理

    1 获取ascii码select ascii(\\\'特殊字符\\\') from dual2 替换update table set testfield= replace(testfield,chr(ascii码),\\\'\\\') where 查询条件

  5. SqlServer和Oracle中一些常用的sql语句10 特殊应用

    --482, ORACLE / SQL SERVER--订购数量超过平均值的书籍WITH Orders_BookAS ( SELECT Book_Name, SUM(Qty) Book_Qty FROM Orders GROUP BY Book_Name )SELECT *FROM Orders_BookWHERE Book_Qty ( SELECT AVG(Book_Qty) FROM Orders_Book )--递归 产生连续数列1至10000WITH Tally(N)AS ( SELECT 1 N --FROM DAUL -- ORACLE UNION ALL --2.递归区块 SELECT N+1 FRO

  6. Oracle实战笔记(第三天)

    导读今天的主要内容有:java连接Oracle、事务、Oracle中的事务处理、Oracle函数。一、Java连接Oracle的两种方式第一种:桥连接(JDBC_ODBC)(不推荐)1、准备工作:桥连接需要配置ODBC数据源,本机必须有安装了Oracle数据库。步骤:打开控制面板    管理工具      ODBC数据源  

  7. Oracle 一些注意点

    number精度问题Number(p,s):p和s都是可选的。p指精度(precision),即总位数。默认情况下精度为38。精度的取值范围为1~38。s指小数位(scale),小数点右边的位数。小数点位数的合法值为-84~127。小数位的默认值由精度来决定。如果没有指定精度,小数位默认为最大的取值区间。如果指

  8. oracle = : := 和变量绑定 oracle通配符和运算符

    oracle通配符和运算符用于where比较条件的有:等于:=、、=、、=、包含:in、not in exists、not exists范围:between...and、not between....and匹配测试:like、not likeNull测试:is null、is not null布尔链接:and、or、not  www.2cto.com通配符:在where子句中,通配符可与like条件一起使用。在Oracle中:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信图片_20190322181744_03.jpg

微信扫一扫打赏

请作者喝杯咖啡吧~

支付宝扫一扫领取红包,优惠每天领

二维码1

zhifubaohongbao.png

二维码2

zhifubaohongbao2.png