Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * Defcon Quals 2013 - incest
- *
- * ELF binary - sis , reverse to C
- * by timhsu@chroot.org, June 2013
- *
- */
- #include <sys/types.h>
- #include <sys/stat.h>
- #include <unistd.h>
- #include <signal.h>
- #include <sys/mman.h>
- #include <sched.h>
- void quit(int n)
- {
- exit(0);
- }
- int main(int argc, char *argv[])
- {
- struct stat buf;
- void (*func)();
- char *key_buffer;
- char *sock_buffer;
- int key_fd;
- int sock_fd;
- signal(SIGCHLD, SIG_IGN);
- signal(SIGALRM, quit);
- alarm(15);
- key_fd = atoi(argv[1]);
- sock_fd = atoi(argv[2]);
- if (!fork()) {
- close(key_fd);
- sock_buffer = mmap(NULL, 4096, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0);
- recv(sock_fd, sock_buffer, 512, 0);
- func = sock_buffer;
- func();
- }
- close(sock_fd);
- fstat(key_fd, &buf);
- key_buffer = calloc(1, buf.st_size);
- read(key_fd, key_buffer, buf.st_size);
- yield:
- sched_yield();
- goto yield;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement