首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

现代Linux系统上的栈溢出攻击

基本内容 这个教程试着向读者展示最基本的栈溢出攻击和现代Linux发行版中针对这种攻击的防御机制。...为此我选择了最新版本的Ubuntu系统(12.10),因为它默认集成了几个安全防御机制,而且它也是一个非常流行的发行版。安装和使用都很方便。我们选择的系统是X86_64的。...读者将会了解到栈溢出是怎样在那些默认没有安全防御机制的老系统上面成功的溢出的。而且还会解释在最新版本的Ubuntu上这些保护措施是如何工作的。...然后看下栈指针 rsp (因为是64位的系统嘛),可以看出rsp的值就是 call go 的下一条指令的地址 0x000000000040055f 。这些就是我们上面所讲的。...属性大大增强了系统的安全性)。

1.2K10

Linux 中的各种栈:进程栈 线程栈 内核栈 中断栈

= 决定合适开哪部送货车 进程 = 道路 + 加油站 + 送货车 + 修车厂 Linux 中有几种栈?...各种栈的内存位置? 介绍完栈的工作原理和用途作用后,我们回归到 Linux 内核上来。...二、线程栈 从 Linux 内核的角度来说,其实它并没有线程的概念。Linux 把所有线程都当做进程来实现,它将线程和进程不加区分的统一到了 task_struct 中。...三、进程内核栈 在每一个进程的生命周期中,必然会通过到系统调用陷入内核。在执行系统调用陷入内核之后,这些内核代码所使用的栈并不是原先进程用户空间中的栈,而是一个单独内核空间的栈,这个称作进程内核栈。...中断也是如此,当系统收到中断事件后,进行中断处理的时候,也需要中断栈来支持函数调用。由于系统中断的时候,系统当然是处于内核态的,所以中断栈是可以和内核栈共享的。

3.5K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Linux操作系统原理—内核网络协议栈

    前言 本文主要记录 Linux 内核网络协议栈的运行原理 数据报文的封装与分用 image.png 封装:当应用程序用 TCP 协议传送数据时,数据首先进入内核网络协议栈中,然后逐一通过 TCP/IP...image.png Linux 内核网络协议栈 协议栈的全景图 image.png 协议栈的分层结构 image.png image.png 逻辑抽象层级: 物理层:主要提供各种连接的物理设备,如各种网卡...image.png sock_init() 包含了内核协议栈的初始化工作: sock_init:Initialize sk_buff SLAB cache,注册 SOCKET 文件系统。...socket.c 提供的系统调用接口。 image.png 协议栈初始化完成后再执行 dev_init(),继续设备的初始化。...image.png 协议栈收包流程概述 硬件层与设备无关层:硬件监听物理介质,进行数据的接收,当接收的数据填满了缓冲区,硬件就会产生中断,中断产生后,系统会转向中断服务子程序。

    3.6K00

    Linux 中的各种栈:进程栈 线程栈 内核栈 中断栈

    = 决定合适开哪部送货车 进程 = 道路 + 加油站 + 送货车 + 修车厂 Linux 中有几种栈?...各种栈的内存位置? 介绍完栈的工作原理和用途作用后,我们回归到 Linux 内核上来。...二、线程栈 从 Linux 内核的角度来说,其实它并没有线程的概念。Linux 把所有线程都当做进程来实现,它将线程和进程不加区分的统一到了 task_struct 中。...三、进程内核栈 在每一个进程的生命周期中,必然会通过到系统调用陷入内核。在执行系统调用陷入内核之后,这些内核代码所使用的栈并不是原先进程用户空间中的栈,而是一个单独内核空间的栈,这个称作进程内核栈。...中断也是如此,当系统收到中断事件后,进行中断处理的时候,也需要中断栈来支持函数调用。由于系统中断的时候,系统当然是处于内核态的,所以中断栈是可以和内核栈共享的。

    2.9K50

    扩展Linux网络栈

    扩展Linux网络栈 来自Linux内核文档。之前看过这篇文章,一直好奇,问什么一条网络流会固定在一个CPU上进行处理,本文档可以解决这个疑问。为了更好地理解本文章中的功能,将这篇文章穿插入内。...简介 本文的描述了Linux网络栈中的一组补充技术,用于增加多处理器系统的并行性和提高性能。...对于低延迟网络来说,最佳设置是分配与系统中CPU数量一样多的队列。...为了启用加速RFS,网络栈会带调用ndo_rx_flow_steer 驱动函数来与期望(匹配特定流)的硬件队列进行交互。网络栈会在rps_dev_flow_table 中的流表项更新之后调用该函数。...参考: Queues, RSS, interrupts and cores Linux Network Scaling: Receiving Packets Linux 网络协议栈收消息过程-Per CPU

    3.6K30

    Linux存储栈

    前言: 随着Linux的版本升高,存储栈的复杂度也随着增加。作者在这里简单介绍目前Linux存储栈。...d,文件系统,并且后端设备在本地。例如上图的/mnt/xfs是使用xfs来mount的。 e,网络文件系统,包括nfs,cifs。后端是在远端,用网络文件系统实现的。 f,远端块设备。...数据在socket中经过ipv4的网络协议栈,最终net-device执行xmit,网卡驱动把数据转化成PCI请求。 物理上,网卡是一个PCI设备。...理解LVM的逻辑的核心在于上文的图中:理解清楚存储栈的层次关系,虚拟块设备到物理块设备之间的映射。...12,其他问题 scsi已经是 很成熟的框架了,但是在Linux4.14上,作者还是看到了scsi引起的kernel die。

    5.3K132

    一文搞懂 | Linux 中的各种栈(进程栈 线程栈 内核栈 中断栈)

    = 决定合适开哪部送货车 进程 = 道路 + 加油站 + 送货车 + 修车厂 Linux 中有几种栈?...各种栈的内存位置? 介绍完栈的工作原理和用途作用后,我们回归到 Linux 内核上来。...二、线程栈 从 Linux 内核的角度来说,其实它并没有线程的概念。Linux 把所有线程都当做进程来实现,它将线程和进程不加区分的统一到了 task_struct 中。...三、进程内核栈 在每一个进程的生命周期中,必然会通过到系统调用陷入内核。在执行系统调用陷入内核之后,这些内核代码所使用的栈并不是原先进程用户空间中的栈,而是一个单独内核空间的栈,这个称作进程内核栈。...中断也是如此,当系统收到中断事件后,进行中断处理的时候,也需要中断栈来支持函数调用。由于系统中断的时候,系统当然是处于内核态的,所以中断栈是可以和内核栈共享的。

    7.2K33

    一文读懂 | Linux 中的各种栈:进程栈 线程栈 内核栈 中断栈

    = 决定合适开哪部送货车 - 进程 = 道路 + 加油站 + 送货车 + 修车厂 Linux 中有几种栈?...各种栈的内存位置? 介绍完栈的工作原理和用途作用后,我们回归到 Linux 内核上来。...二、线程栈 从 Linux 内核的角度来说,其实它并没有线程的概念。Linux 把所有线程都当做进程来实现,它将线程和进程不加区分的统一到了 task_struct 中。...三、进程内核栈 在每一个进程的生命周期中,必然会通过到系统调用陷入内核。在执行系统调用陷入内核之后,这些内核代码所使用的栈并不是原先进程用户空间中的栈,而是一个单独内核空间的栈,这个称作进程内核栈。...中断也是如此,当系统收到中断事件后,进行中断处理的时候,也需要中断栈来支持函数调用。由于系统中断的时候,系统当然是处于内核态的,所以中断栈是可以和内核栈共享的。

    2.1K20

    Linux栈溢出入门

    ebp是栈底指针 esp是栈顶指针 好奇为啥栈底指针在最高的地方 aris说是为了最大化利用空间(懵逼) ~~学习一下栈的知识~~ 只要覆盖0x44个字节把 v5覆盖了就行 # coding=utf8...有一个getenv函数 是从系统环境中获得变量,问了一下aris export这个命令就行 ch1p告诉我在ida里面可以用h将值变成16进制 ?...看到win的入口地址是 0x08048424 把v5的值改成这个就行 需要 0x40个A+0x08048424 aris教我可以用hex来查看堆栈信息 使用回车可以看后面栈的内容 可以发现我已经将v5的值改掉了...发现并没有跳到我给的地址打印一下栈看一下 ? 发现我的已经写上去了,但是地址还在后面8位 所以更改payload A*0x48+'bbbb'+p32(0x08048424) 成功! ?

    2.8K10

    栈与队列:系统中处处都是栈的应用

    如果还记得编译原理的话,编译器在 词法分析的过程中处理括号、花括号等这个符号的逻辑,也是使用了栈这种数据结构。 再举个例子,linux系统中,cd这个进入目录的命令我们应该再熟悉不过了。..../ 这个命令最后进入a目录,系统是如何知道进入了a目录呢 ,这就是栈的应用(其实可以出一道相应的面试题了) 所以栈在计算机领域中应用是非常广泛的。...进入正题 由于栈结构的特殊性,非常适合做对称匹配类的题目。 首先要弄清楚,字符串里的括号不匹配有几种情况。 「一些同学,在面试中看到这种题目上来就开始写代码,然后就越写越远。」...动画如下: 第一种情况:已经遍历完了字符串,但是栈不为空,说明有相应的左括号没有右括号来匹配,所以return false 第二种情况:遍历字符串匹配的过程中,发现栈里没有要匹配的字符。...,栈是空的,就说明全都匹配了。

    45420

    【系统架构】遗留系统的技术栈迁移

    什么是遗留系统(Legacy System)?根据维基百科的定义,遗留系统是一种旧的方法、旧的技术、旧的计算机系统或应用程序[1]。这一定义事实上并没有很好地揭露遗留系统的本质。...这意味着遗留系统会逐渐随着时间的推移,不断地增加维护成本。 维护一个软件系统,就需要了解该软件系统的知识。若知识缺失,就意味着这会给维护人员带来极大的障碍和困难。...若要让遗留系统焕发青春,最彻底的做法自然是推倒重来,但这样付出的代价太高;而且,即使对系统重新设计和开发,仍然免不了会重蹈遗留系统的覆辙。...或者,可以对遗留系统进行重构,在不修改系统功能的情况下改善系统设计。只是这种重构常常是对系统进行重大扩展或修改的前奏,如无绝对必要,并不推荐这种偿还“技术债务(Technical Debt)”的方式。...最后,还有一种方式,则是对遗留系统进行技术栈迁移。

    1.2K70

    Linux内核IO技术栈详解

    这是《Linux系统调用那些事》高级部分的第一章《聊聊Linux IO》。高级部分的文章均假设读者完整的学习过Linux系统基础以及Linux系统编程相关的内容,并已有一定的工程实践经验。...Linux内核中的IO栈 这一小节来看Linux内核的IO栈的结构。...先上一张全貌图[4]: 由图可见,从系统调用的接口再往下,Linux下的IO栈致大致有三个层次: 文件系统层,以 write 为例,内核拷贝了write参数指定的用户态数据到文件系统Cache中,并适时向下层同步...设备层,通过DMA与内存直接交互,完成数据和具体设备之间的交互 结合这个图,想想Linux系统编程里用到的Buffered IO、mmap、Direct IO,这些机制怎么和Linux IO栈联系起来呢...无论如何,希望学习完Linux系统编程的同学,能继续的往下走一走,尝试理解系统调用背后隐含的机制和原理。探索的结果无所谓,重要的是探索的过程以及相关的学习经验和方法。

    2.7K10

    Linux 内核的网络协议栈

    前言 本文主要记录 Linux 内核网络协议栈的运行原理 数据报文的封装与分用 封装:当应用程序用 TCP 协议传送数据时,数据首先进入内核网络协议栈中,然后逐一通过 TCP/IP 协议族的每层直到被当作一串比特流送入网络...Linux 内核网络协议栈 协议栈的全景图 协议栈的分层结构 逻辑抽象层级: 物理层:主要提供各种连接的物理设备,如各种网卡,串口卡等。...socket.c 提供的系统调用接口。 协议栈初始化完成后再执行 dev_init(),继续设备的初始化。...Socket 创建流程 协议栈收包流程概述 硬件层与设备无关层:硬件监听物理介质,进行数据的接收,当接收的数据填满了缓冲区,硬件就会产生中断,中断产生后,系统会转向中断服务子程序。...协议栈发包流程概述 1、应用层可以通过系统调用接口层或文件操作来调用内核函数,BSD socket 层的 sock_write() 会调用 INET socket 层的 inet_wirte()。

    3.1K61

    栈栈栈栈栈栈栈栈栈栈栈栈栈栈栈栈栈栈

    明白了栈的基本操作后,我们需要去深入地思考一下,栈是如何工作的。换句话说,为了使栈这个数据结构按照栈的方式去工作,它需要什么?...1)栈需要有一个指针,我们称之为 TOP,用它来指向栈中最顶部的那个元素。 2)当我们初始化一个栈的时候,我们把 TOP 的值设置为 -1,这样我们就可以通过 TOP == -1 来判断栈是否为空。...空栈的时候,TOP 等于 -1;把元素 1 压入栈中的时候,stack[0] 为 1,TOP 加 1 变为 0;把元素 2 压入栈中的时候,stack[1] 为 2,TOP 加 1 变为 1;把元素 3...假设栈中的元素是 int 类型,我们可以用 Java 语言来自定义一个最简单的栈。...3)用于浏览器:浏览器的后退按钮会把我们访问的 URL 压入一个栈中,每次我们访问一个新的页面,新的 URL 就压入了栈的顶部,当我们点了后退按钮,最新的那个 URL 就从栈中移除,之前的那个 URL

    70820

    Linux系统|Linux系统应急响应

    目录 排查用户相关的信息 排查进程端口相关的信息 查找恶意程序并杀掉 斩草除根 判断入侵方式,修复漏洞 当我们被告知一台Linux服务器被黑客入侵,黑客利用该服务器进行挖矿...w #显示已经登陆系统的用户列表,并显示用户正在执行的指令 users #显示当前登录系统的所有用户的用户列表 last #查看最近登录成功的用户及信息...,查看的是 /var/log/wtmp 文件 lastb #查看最近登录失败的用户及信息,查看的是 /var/log/btmp 文件 lastlog #显示系统中所有用户最近一次登录信息...#查看爆破用户名字典 总的来说,黑客入侵主机有下列几种情况: 通过 redis 未授权漏洞入侵(好多挖矿程序是通过这个) ssh 弱口令暴力破解 Web 程序漏洞入侵 参考文章: 记一次Linux...木马清除过程 相关文章:Redis未授权访问漏洞 Linux挖矿病毒的清除与分析 Linux下性能监控、守护进程与计划任务管理 来源:

    9.5K20

    Linux漏洞分析入门笔记-栈溢出

    栈空间也被操作系统设置了不可执行属性,因此我们注入的Shellcode就无法执行了。...在系统函数库(Linux称为libc)有个system函数,它就是通过/bin/sh命令去执行一个用户执行命令或者脚本,我们完全可以利用system函数来实现Shellcode的功能。...而根据Linux X86 32位函数调用约定,参数是压到栈上的。但是栈空间完全由我们控制了,所以控制system的函数不是一件难事情。...32位系统使用堆栈来传参,在64位系统中使用RDI来传递参数,所以我们不仅需要控制系统栈,还需要控制RDI,这无疑给我们增加了许多难度,但是这并不是做不到的! 要获得shell需要做如下步骤: a....Linux系统中对应用程序漏洞防护有三个: SSP(Stack-Smashing Protectot):堆栈防溢出保护,它会在每个函数的栈帧底部添加一个随机字节,每次函数将要返回时,都会这个随机字节进行验证

    2K40

    【Linux】Linux系统调用

    Linux系统调用 前言 操作系统——管理计算机硬件与软件资源的软件,是用户和系统交互的操作接口,为它上面运行的程序提供服务。...操作系统内核——操作系统的内核,负责管理系统的进程、内存、设备驱动程序、文件和网络系统。一个内核不是一套完整的操作系统。例如Linux。 Linux操作系统——基于Linux内核的操作系统。...通常由Linux内核、shell(特殊的应用程序,提供运行其他程序的接口)、文件系统和应用程序组成。常见的有:Redhat、Fedora、Centos、Ubuntu和Android等。...Linux的运行空间: Linux的运行空间:内核空间+用户空间 ---- 内核空间——存放的是整个内核代码和所有内核模块,以及内核所维护的数据。 用户空间——用户程序的代码和数据。...---- 系统调用的实现 通过软件中断实现。 **软件中断:**它是通过软件指令触发的中断。Linux系统内核响应软件中断,从用户态切换到内核态,执行相应的系统调用。

    27.9K10
    领券