用LD_PRELOAD覆盖getuid不能直接工作,但可以在gdb中工作

问题描述

我正在解决星云漏洞利用演习(https://exploit-exercises.lains.space/nebula/level13/)带来的挑战。由于已编译的二进制文件是动态链接的,因此我想到编写自定义getuid()以返回1000并设置LD_PRELOAD = custom_getuid。当我直接执行二进制文件时,这似乎不起作用,但是我可以通过在gdb,ltrace,strace中执行来绕过检查。 gdb可以加载我的自定义getuid。任何人都可以解释这种行为吗?谢谢!

find the output of two approaches here

解决方法

我发现了问题,LD_PRELOAD不会影响suid二进制文件。所以我的二进制文件将suid设置为flag13用户。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...