热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

《网络攻防实践》第十周作业

冯诺依曼体系结构与图灵机冯诺依曼体系结构冯诺伊曼结构(英语:VonNeumannarchitecture),也称冯诺伊曼模型

冯诺依曼体系结构与图灵机

冯诺依曼体系结构

冯·诺伊曼结构(英语:Von Neumann architecture),也称冯·诺伊曼模型(Von Neumann model)或普林斯顿结构(Princeton architecture),是一种将程序指令存储器和数据存储器合并在一起的计算机设计概念结构。本词描述的是一种实现通用图灵机的计算设备,以及一种相对于并行计算的序列式结构参考模型(referential model)。

本结构隐约指导了将存储设备与中央处理器分开的概念,因此依本结构设计出的计算机又称存储程序计算机。
冯.诺依曼体系结构是现代计算机的基础,现在大多计算机仍是冯.诺依曼计算机的组织结构,只是作了一些改进而已,并没有从根本上突破冯体系结构的束缚。冯.诺依曼也因此被人们称为“计算机之父”。

存储程序计算机在体系结构上主要特点有:

  • 以运算单元为中心
  • 采用存储程序原理
  • 存储器是按地址访问、线性编址的空间
  • 控制流由指令流产生
  • 指令由操作码和地址码组成
  • 数据以二进制编码

1508801-20190505125807688-112094434.png

程序内存和数据内存之间的共享总线导致了冯诺依曼瓶颈,即中央处理器(CPU)和内存之间的有限吞吐量(数据传输速率)与内存的数量相比。因为单个总线一次只能访问两类内存中的一种,所以吞吐量低于CPU的工作速率。当CPU需要对大量数据执行最小的处理时,这严重限制了有效的处理速度。CPU不断地被迫等待所需的数据被传输到或从内存中。由于CPU速度和内存大小的增长速度比它们之间的吞吐量增长速度快得多,瓶颈已经成为一个更大的问题,这个问题的严重性随着新一代CPU的出现而增加。

图灵机

一张经典的图灵机构成图:
1508801-20190510133912210-1549568755.png
图灵的基本思想是用机器来模拟人们用纸笔进行数学运算的过程,他把这样的过程看作下列两种简单的动作:

  • 在纸上写上或擦除某个符号
  • 把注意力从纸的一个位置移动到另一个位置
    而在每个阶段,人要决定下一步的动作,依赖于(a)此人当前所关注的纸上某个位置的符号和(b)此人当前思维的状态。

在某些模型中,纸带移动,而未用到的纸带真正是“空白”的。要进行的指令(q4)展示在扫描到方格之上。

在某些模型中,读写头沿着固定的纸带移动。要进行的指令(q1)展示在读写头内。在这种模型中“空白”的纸带是全部为0的。有阴影的方格,包括读写头扫描到的空白,标记了1,1,B的那些方格,和读写头符号,构成了系统状态。

为了模拟人的这种运算过程,图灵构造出一台假想的机器,该机器由以下几个部分组成:

  • 一条无限长的纸带TAPE。纸带被划分为一个接一个的小格子,每个格子上包含一个来自有限字母表的符号,字母表中有一个特殊的符号 {\displaystyle \square } \square表示空白。纸带上的格子从左到右依次被编号为0, 1, 2, ...,纸带的右端可以无限伸展。
  • 一个读写头HEAD。该读写头可以在纸带上左右移动,它能读出当前所指的格子上的符号,并能改变当前格子上的符号。
  • 一套控制规则TABLE。它根据当前机器所处的状态以及当前读写头所指的格子上的符号来确定读写头下一步的动作,并改变状态寄存器的值,令机器进入一个新的状态,按照以下顺序告知图灵机命令:
    • 写入(替换)或擦除当前符号
    • 移动 HEAD, 'L'向左, 'R'向右或者'N'不移动
    • 保持当前状态或者转到另一状态
  • 一个状态寄存器。它用来保存图灵机当前所处的状态。图灵机的所有可能状态的数目是有限的,并且有一个特殊的状态,称为停机状态。参见停机问题。
    注意这个机器的每一部分都是有限的,但它有一个潜在的无限长的纸带,因此这种机器只是一个理想的设备。图灵认为这样的一台机器就能模拟人类所能进行的任何计算过程。

冯诺依曼体系结构和图灵机的联系

首先什么是图灵机和冯诺依曼计算机体系。图灵机是一个计算机的理论模型,本质上是状态机;冯诺依曼体系是图灵机的实现,包括运算、控制、存储、输入、输出五个部分。诺依曼体系相对之前的计算机最大的创新在于程序和数据的存储,以此实现机器内部编程。

图灵机的纸带应对应诺依曼计算机体系中的存储,读写头对应输入和输出,规则(读了一个符号后下一步做什么)对应运算,纸带怎么移动对应控制。

参考:https://www.zhihu.com/question/25004267/answer/86444056

程序 = 指令 + 数据

不管多么复杂的软件程序,到了汇编层面(最接近硬件的层面), 都成了简单的指令流。这些指令流虽然简单,但是已经包含了所有必须的计算指令。每一行汇编代码都有固定的格式,都是一条指令,而寄存器为数据提供了一种存储的方式,操作寄存器可以对寄存器中的数据进行操作。
程序 = 指令 + 数据是对程序的一种直观、本质的解释方式。

缓冲区溢出、XSS攻击、SQL注入攻击

这些安全问题的共同点是都进行了越界访问,访问了他们本不该访问到的内存空间,从而执行了本不该被执行的代码。

对于缓冲区溢出攻击来说,这种说法非常好理解,就是缓冲区溢出字面的意思。

对于XSS攻击,XSS攻击被认为是“新型的缓冲区溢出攻击”,其本质也是利用缓冲区溢出实现。

对于SQL注入攻击该如何理解呢?SQL注入是一种针对数据库的攻击方式,攻击者在输入的字符串之中注入SQL指令,在设计不良的程序当中忽略了字符检查,那么这些注入进去的恶意指令就会被数据库服务器误认为是正常的SQL指令而运行,因此遭到破坏或是入侵。在设计的意图中,接受这些恶意的sql指令的地方本不应该执行该种类型的代码,也就是说本来应该没有权限进行该种类型的操作,查询就应该只是查询,而且只能是在该针对用户的查询或者说是针对数据库中某个表的某一项的查询,用户的输入本来只能是参数而非指令,而当用户的输入变成指令后,访问的内存就不是原来指令所在的内存了。

要提出统一的防范措施,我认为很难对所有攻击做到有效的防御,或者说不能比单独针对这三种攻击的防范措施加起来做的更好。因为这三种攻击毕竟是针对三种不同的应用。如果说有一种统一的防范措施的话,那我觉得是严格的内存边界检查,对每一条指令的访问内存范围都进行检查,但这会大大拖慢程序的运行效率。

转:https://www.cnblogs.com/intoxication/p/10812280.html



推荐阅读
  • 浅解XXE与Portswigger Web Sec
    XXE与PortswiggerWebSec​相关链接:​博客园​安全脉搏​FreeBuf​XML的全称为XML外部实体注入,在学习的过程中发现有回显的XXE并不多,而 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 本文介绍了绕过WAF的XSS检测机制的方法,包括确定payload结构、测试和混淆。同时提出了一种构建XSS payload的方法,该payload与安全机制使用的正则表达式不匹配。通过清理用户输入、转义输出、使用文档对象模型(DOM)接收器和源、实施适当的跨域资源共享(CORS)策略和其他安全策略,可以有效阻止XSS漏洞。但是,WAF或自定义过滤器仍然被广泛使用来增加安全性。本文的方法可以绕过这种安全机制,构建与正则表达式不匹配的XSS payload。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • 【工具篇】抓包中的王牌工具—Fiddler (1环境搭建)
    本文介绍了抓包工具Fiddler的概述,包括其功能、选择原因和安装方法。Fiddler是一款免费且功能强大的抓包工具,可用于网络代理、接口测试、安全测试和WEB调试等。安装配置简单,上手快速,适合新手使用。详细的安装地址为https://www.telerik.com/download/fiddl。 ... [详细]
  • PreparedStatement防止SQL注入
    添加数据:packagecom.hyc.study03;importcom.hyc.study02.utils.JDBCUtils;importjava.sql ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • Oracle Database 10g许可授予信息及高级功能详解
    本文介绍了Oracle Database 10g许可授予信息及其中的高级功能,包括数据库优化数据包、SQL访问指导、SQL优化指导、SQL优化集和重组对象。同时提供了详细说明,指导用户在Oracle Database 10g中如何使用这些功能。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 延迟注入工具(python)的SQL脚本
    本文介绍了一个延迟注入工具(python)的SQL脚本,包括使用urllib2、time、socket、threading、requests等模块实现延迟注入的方法。该工具可以通过构造特定的URL来进行注入测试,并通过延迟时间来判断注入是否成功。 ... [详细]
  • 本文介绍了互联网思维中的三个段子,涵盖了餐饮行业、淘品牌和创业企业的案例。通过这些案例,探讨了互联网思维的九大分类和十九条法则。其中包括雕爷牛腩餐厅的成功经验,三只松鼠淘品牌的包装策略以及一家创业企业的销售额增长情况。这些案例展示了互联网思维在不同领域的应用和成功之道。 ... [详细]
  • Python已成为全球最受欢迎的编程语言之一,然而Python程序的安全运行存在一定的风险。本文介绍了Python程序安全运行需要满足的三个条件,即系统路径上的每个条目都处于安全的位置、"主脚本"所在的目录始终位于系统路径中、若python命令使用-c和-m选项,调用程序的目录也必须是安全的。同时,文章还提出了一些预防措施,如避免将下载文件夹作为当前工作目录、使用pip所在路径而不是直接使用python命令等。对于初学Python的读者来说,这些内容将有所帮助。 ... [详细]
  • jvm内存区域与溢出为什么学习jvm木板原理,最短的一块板决定一个水的深度,当一个系统垃圾收集成为瓶颈的时候,那么就需要你对jvm的了解掌握。当一个系统出现内存溢出,内存泄露的时候 ... [详细]
author-avatar
手机用户2702938842_284
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有