| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> CTFHub Linux 动态加载 -> 正文阅读 |
|
[系统运维]CTFHub Linux 动态加载 |
CTFHub Linux 动态加载观察页面,写着没有 x权限,说明我们没有办法执行根目录下的 elf 文件 readflag,所以我们无法利用下方的 webshell 获取flag(我们的权限不够)
继续思考,什么是 elf文件? 在计算机科学中,是一种用于二进制文件、可执行文件、目标代码、共享库和核心转储格式文件的文件格式。 ELF文件参与程序的连接(建立一个程序)和程序的执行(运行一个程序) 所以可以从不同的角度来看待elf格式的
这里借用一位博主的图片加深理解
假如我们对执行一段程序,那么 这段代码会经历 以下阶段: 预处理阶段---->编译阶段---->汇编阶段----->代码执行 在 汇编阶段 会将我们的文件翻译成 机器语言指令,并把这些指令打包成一种叫做可重定位目标程序的格式,并将结果保存在目标文件中(把汇编语言翻译成机器语言的过程)。 汇编结束后,就要与所依赖的外部库连接起来(调用函数库)。
函数库分为 静态库和动态库 静态库 指直接将我们所调用的 函数库的代码全部加入到可执行文件中,产生的文件较大,当然在使用的过程中也就不需要库文件。而动态库是指在调用的过程中,函数库以链接的形式加入到可执行文件中,让可执行文件通过链接去访问函数库,节约了系统内存。 在linux中动态库文件是ld-linux.so.2
同时在加载 动态库的时候,控制权在ld-linux.so加载器加载完所有的动态库的时候才会将权限移交给程序 而且, ELF 文件提供了相应的加载信息, GCC包含了一个特殊的 ELF 头INTERP, 这个 INTERP指定了 加载器的路径。ELF 规格要求,假如 PT_INTERP 存在的话,操作系统必须创建这个 interpreter文件的运行映射,而不是这个程序本身, 控制权会交给这个interpreter,用来定位和加载所有的动态库. 从而达到绕过 程序本身的权限不足 所以我们使用动态加载器动态链接 elf文件 使用中国蚁剑 点击右键,虚拟终端 输入我们的payload
获得 flag |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 22:42:57- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |