首页 > 其他分享 >安全之注入攻击

安全之注入攻击

时间:2024-06-04 23:44:04浏览次数:20  
标签:语句 ShipCity 攻击 用户 安全 SQL 攻击者 注入

有一个安全设计原则——“数据与代码分离”原则,它可以说是专门为了解决注入攻击而生的。

而注入攻击的本质,是把用户输入的数据当做代码执行。

这里有两个关键条件:

  • 第一个是用户能够控制输入;
  • 第二个是原本程序要执行的代码,拼接了用户输入的数据。

1 SQL注入

1.1 下面是一个SQL注入的典型例子。

    var Shipcity;
    ShipCity = Request.form ("ShipCity");
    var sql = "select * from OrdersTable where ShipCity = '" + ShipCity + "'";

变量ShipCity的值由用户提交,在正常情况下,假如用户输入“Beijing”,那么SQL语句会执行:

    SELECT * FROM OrdersTable WHERE ShipCity = 'Beijing'

但假如用户输入一段有语义的SQL语句,比如:

    Beijing'; drop table OrdersTable--

那么,SQL语句在实际执行时就会如下:

    SELECT * FROM OrdersTable WHERE ShipCity = 'Beijing'; drop table OrdersTable--'

我们看到,原本正常执行的查询语句,现在变成了查询完后,再执行一个drop表的操作,而这个操作,是用户构造了恶意数据的结果。

回过头来看看注入攻击的两个条件:

(1)用户能够控制数据的输入——在这里,用户能够控制变量ShipCity。

(2)原本要执行的代码,拼接了用户的输入:

这个“拼接”的过程很重要,正是这个拼接的过程导致了代码的注入。

1.2 关于错误回显

在SQL注入的过程中,如果网站的Web服务器开启了错误回显,则会为攻击者提供极大的便利。

比如攻击者在参数中输入一个单引号“'”,引起执行查询语句的语法错误,服务器直接返回了错误信息:

Microsoft JET Database Engine错误 ’80040e14'
    字符串的语法错误 在查询表达式 ’ID=49'’ 中。
    /showdetail.asp,行8

从错误信息中可以知道,服务器用的是Access作为数据库,查询语句的伪代码极有可能是:

    select  xxx  from  table_X  where  id = $id

错误回显披露了敏感信息,对于攻击者来说,就更容易构造SQL注入的语句。

所以在我们网站的web服务器中,我们最好不要直接把数据库错误信息未经处理的返回给用户。

1.3 盲注(BIind Injection)

当Web服务器关闭了错误回显,这时就没有办法成功实施SQL注入攻击了吗?

攻击者为了应对这种情况,研究出了“盲注”(Blind Injection)的技巧。

所谓“盲注”,就是在服务器没有错误回显时完成的注入攻击。

服务器没有错误回显,对于攻击者来说缺少了非常重要的“调试信息”,

所以攻击者必须找到一个方法来验证注入的SQL语句是否得到执行。

最常见的盲注验证方法是: 构造简单的条件语句,根据返回页面是否发生变化,来判断SQL语句是否得到执行。

 

标签:语句,ShipCity,攻击,用户,安全,SQL,攻击者,注入
From: https://www.cnblogs.com/Vincent-yuan/p/18232018

相关文章

  • 一款WPF的精简版MVVM框架——stylet框架(MVVM绑定、依赖注入等)
    今天偶然知道一款叫做stylet的MVVM框架,挺小巧的,特别是它的命令触发方式,简单粗暴,让人感觉很巴适,现在我做一个简单的demo来顺便来分享给大家。本地创建一个WPF项目,此处我使用.NET8来创建。然后引用stylet最新的nuget包。 然后删掉App.xaml里面自带的启动项删掉以后: sty......
  • 一款WPF的精简版MVVM框架——stylet框架的初体验(包括MVVM绑定、依赖注入等操作)
    今天偶然知道一款叫做stylet的MVVM框架,挺小巧的,特别是它的命令触发方式,简单粗暴,让人感觉很巴适,现在我做一个简单的demo来顺便来分享给大家。本地创建一个WPF项目,此处我使用.NET8来创建。然后引用stylet最新的nuget包。 然后删掉App.xaml里面自带的启动项删掉以后: styl......
  • 供应链安全论文阅读(一)Backstabber's Knife Collection: A Review of Open Source Soft
    引言该论文Backstabber'sKnifeCollection:AReviewofOpenSourceSoftwareSupplyChainAttacks发表在2020年的DIMVA上,作者为波恩大学的MarcOhm。本文是开源软件供应链安全领域较早期的一篇论文,主要针对软件供应链中恶意软件包的威胁进行了详细介绍。首先简单介绍一下软......
  • 33、nginx-CA和https(http+ssl(安全套接字))私有CA--网站加密(443 ssl https)-加密密钥key
    算法:将原有的值通过一些算法来进行加密对称算法(加密和解密的过程用的钥匙是相同的):AES\DES\3DES非对称算法(加密和解密的过程中使用的钥匙是不一样的):DH\RSAhash算法:MD5=========================================SSL安全套接字===================================......
  • 通用漏洞-crlf&url重定向&拒绝服务攻击
    1.crlf注入1.1原理crlf是在数据包头头部采取一些回车加换行的操作,把自己的其他代码放到数据包中去覆盖掉原本的数据的方法,常配合xss漏洞使用,这个漏洞本身的造成危害并不严重,CRLFInjection又叫HTTP响应拆分/截断(HTTPResponseSplitting)简称HRS。CRLF是CR和LF两个字符的拼接......
  • 守护行车,智慧相伴:智能网联汽车安全监控大屏的新篇章
    在繁忙的都市中,驾驶者往往面临着诸多安全隐患。传统的驾驶辅助系统虽然能够提供一定的帮助,但在复杂多变的交通环境中,其局限性也逐渐显现。而智能网联汽车安全监控大屏,正是为了解决这一问题而诞生的。山海鲸可视化大屏 大屏采用了最先进的智能监控技术,能够实时分析道路情况、......
  • AI烟火识别算法在消防安全与火灾预警系统中的应用与价值
    在信息化和智能化的今天,烟火识别算法作为一种重要的技术工具,在火灾预防和处理中发挥着关键作用。其工作原理主要基于深度学习和图像处理技术,能够实时分析监控画面,准确检测出图像中的烟火,并发出预警。一、烟火识别算法的工作原理烟火识别算法的工作原理主要基于深度学习和图像处......
  • 数据治理--数据安全
            ......
  • ssl证书安全认证的原理是什么?
    SSL证书安全认证的原理是什么?SSL证书是一种数字安全证书,由受信任的CA机构验证身份后颁发,可以对数据传输进行加密以及对服务器进行身份验证。在配置SSL证书后,网站地址栏会显示“https://”开头,同时显示安全锁标志或绿色地址栏,这表示该网站已经通过了权威的第三方CA机构认证,用户可......
  • linux安全基线自查手册
    1.Redhat/CentOS7.x配置模板1.1帐号管理1.1.1检查是否设置除root之外UID为0的用户严重级别:中危理论依据:任何UID为0的帐户都具有系统上的超级用户特权,只有root账号的uid才能为0配置要求:除root之外的其他账号UID不能为0检查步骤执行以下命令查看系统中uid为0的账号/bi......