您尚未登录。

#1 2017-04-13 21:25:40

xtricman
喵了个咪
注册时间: 2012-12-26
帖子: 271

这个程序为啥会显示No Such File Or Directory?

用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还是没有啊?

离线

#2 2017-04-14 11:05:02

依云
a.k.a. 百合仙子
所在地: 一个等待妹纸出现的地方
注册时间: 2011-08-21
帖子: 4,384
个人网站

Re: 这个程序为啥会显示No Such File Or Directory?

man 8 switch_root

另外你应该 chroot 到 ../../.. 而不是 chdir。见 Escaping a chroot jail/1 | PyTux

离线

#3 2017-04-14 20:59:28

xtricman
喵了个咪
注册时间: 2012-12-26
帖子: 271

Re: 这个程序为啥会显示No Such File Or Directory?

依云 说:

man 8 switch_root

另外你应该 chroot 到 ../../.. 而不是 chdir。

为啥要chroot过去?我把进程工作目录设置出去不行吗?然后我execve的参数也没有写绝对路径,所以不是应该从我当前目录查找bin/sh?没找到文件是因为我chdir根本没到达initramfs而还停在初始的目录里?

离线

#4 2017-04-14 21:03:32

依云
a.k.a. 百合仙子
所在地: 一个等待妹纸出现的地方
注册时间: 2011-08-21
帖子: 4,384
个人网站

Re: 这个程序为啥会显示No Such File Or Directory?

看文档和链接。

离线

页脚