问题描述
我正在解决星云漏洞利用演习(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用户。