页次: 1
用root执行的,企图跳出根文件系统,跳到initramfs里面去,但是失败了
#include <unistd.h>
#include <stdio.h>
#include <errno.h>
#include <string.h>
int main(int argc, char **argv){
printf("EUID=%u \n", geteuid());
printf("chroot return %d \n", chroot(".java"));
printf("chdir return %d \n", chdir("../../../../../../../../../../.."));
execve("bin/sh", NULL, NULL);
printf("execve return %s\n", strerror(errno));
char path[200];
printf("PWD %s \n", getcwd(path,200));
}
root执行的,输出是
[xtricman@XTRICMAN-PC ~]$ su
密码:
[root@XTRICMAN-PC xtricman]# gcc t.c -o t
[root@XTRICMAN-PC xtricman]# ./t
EUID=0
chroot return 0
chdir return 0
execve return No such file or directory
PWD (unreachable)/
[root@XTRICMAN-PC xtricman]#
为啥没成功执行shell?这到底是跳到了initramfs还是没有啊?
反社会,精神极其不稳定,随时可能炸碎身边所有人
离线
man 8 switch_root
另外你应该 chroot 到 ../../.. 而不是 chdir。见 Escaping a chroot jail/1 | PyTux
离线
man 8 switch_root
另外你应该 chroot 到 ../../.. 而不是 chdir。
为啥要chroot过去?我把进程工作目录设置出去不行吗?然后我execve的参数也没有写绝对路径,所以不是应该从我当前目录查找bin/sh?没找到文件是因为我chdir根本没到达initramfs而还停在初始的目录里?
反社会,精神极其不稳定,随时可能炸碎身边所有人
离线
看文档和链接。
离线
页次: 1