CTFHub Linux 动态加载

CTFHub Linux 动态加载

在这里插入图片描述

观察页面,写着没有 x权限,说明我们没有办法执行根目录下的 elf 文件 readflag,所以我们无法利用下方的 webshell 获取flag(我们的权限不够)
在这里插入图片描述

在这里插入图片描述
我们发现无法访问到 flag

Linux 下
x(eXecute,执行):对文件而言,具有执行文件的权限;对目录了来说该用户具有进入目录的权限

Linux 755权限 & 644权限:

在linux下,chomd也可以用数字表示权限 如 chomd 777 file

语法为: chomd xyz file

x: 表示 代表文件所有者拥有的权限 (User)

y:代表文件所有者同组用户的权限为 (Group)

z:代表公共用户的权限 (Other)

同时:读的权限 : r= 4 写的权限:w = 2 运行的权限为 x = 1

所以 ,755意味着:

  • User rwx属性全都具备:4+2+1=7
  • Group、Other 只具备 r x : 4+1=5

644 意味着失去了运行的权限

回到题目中来,页面提示我们 根目录下的 readflag 失去了 执行的权限,我们无法通过 一句话木马 获取 flag

继续思考,什么是 elf文件?

在计算机科学中,是一种用于二进制文件可执行文件目标代码、共享库和核心转储格式文件的文件格式。

ELF文件参与程序的连接(建立一个程序)和程序的执行(运行一个程序)

所以可以从不同的角度来看待elf格式的

  • 如果用于编译和链接(可重定位文件),则编译器和链接器将把elf文件看作是节头表描述的节的集合,程序头表可选。
  • 如果用于加载执行(可执行文件),则加载器则将把elf文件看作是程序头表描述的段的集合,一个段可能包含多个节,节头表可选。

这里借用一位博主的图片加深理解
在这里插入图片描述
elf文件左边是于编译和链接 右边是代码执行

可重定位目标文件:包含二进制代码和数据,其形式可以和其他目标文件进行合并,创建一个可执行目标文件

假如我们对执行一段程序,那么 这段代码会经历 以下阶段:

预处理阶段---->编译阶段---->汇编阶段----->代码执行

在 汇编阶段 会将我们的文件翻译成 机器语言指令,并把这些指令打包成一种叫做可重定位目标程序的格式,并将结果保存在目标文件中(把汇编语言翻译成机器语言的过程)。

汇编结束后,就要与所依赖的外部库连接起来(调用函数库)。

打个比方 我们书写了 printf(“hello world”),该程序调用了printf函数。 printf函数存在于一个名为printf.o的单独的预编译目标文件中。 链接器(ld)就负责处理把这个文件并入到hello.o程序中,结果得到hello文件,一个可执行文件。

函数库分为 静态库和动态库

静态库 指直接将我们所调用的 函数库的代码全部加入到可执行文件中,产生的文件较大,当然在使用的过程中也就不需要库文件。而动态库是指在调用的过程中,函数库以链接的形式加入到可执行文件中,让可执行文件通过链接去访问函数库,节约了系统内存。

在linux中动态库文件是ld-linux.so.2

ld-linux.so.2 glibc的库文件,一般链接到相应版本的ld-xxx.so上,是和动态库载入有关的函数

我们可以通过ldd 命令来查看一个 应用需要哪些依赖的动态库

同时在加载 动态库的时候,控制权在ld-linux.so加载器加载完所有的动态库的时候才会将权限移交给程序

而且, ELF 文件提供了相应的加载信息, GCC包含了一个特殊的 ELF 头INTERP, 这个 INTERP指定了 加载器的路径。ELF 规格要求,假如 PT_INTERP 存在的话,操作系统必须创建这个 interpreter文件的运行映射,而不是这个程序本身, 控制权会交给这个interpreter,用来定位和加载所有的动态库.

从而达到绕过 程序本身的权限不足

所以我们使用动态加载器动态链接 elf文件

使用中国蚁剑

点击右键,虚拟终端 输入我们的payload

/lib64/ld-linux-x86-64.so.2 /readflag 

在这里插入图片描述

获得 flag
在这里插入图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值