Just connecting to the service, a 64bit cpu registers dump is received, and so does several binary code as you can see:
The registers represent an initial cpu state, and we have to reply with the registers result of the binary code execution. This must be automated becouse of the 10 seconds server socket timeout.
The exploit is quite simple, we have to set the cpu registers to this values, execute the code and get resulting registers.
In python we created two structures for the initial state and the ending state.
finalRegs = {'rax':'','rbx':'','rcx':'','rdx':'','rsi':'','rdi':'','r8':'','r9':'','r10':'','r11':'','r12':'','r13':'','r14':'','r15':''}
We inject at the beginning several movs for setting the initial state:
for r in cpuRegs.keys():
code.append('mov %s, %s' % (r, cpuRegs[r]))
The 64bit compilation of the movs and the binary code, but changing the last ret instruction by a sigtrap "int 3"
We compile with nasm in this way:
os.popen('nasm -f elf64 code.asm')
os.popen('ld -o code code.o ')
And use GDB to execute the code until the sigtrap, and then get the registers
fd = os.popen("gdb code -ex 'r' -ex 'i r' -ex 'quit'",'r')
for l in fd.readlines():
for x in finalRegs.keys():
...
We just parse the registers and send the to the server in the same format, and got the key.
The code:
from libcookie import *
from asm import *
import os
import sys
host = 'catwestern_631d7907670909fc4df2defc13f2057c.quals.shallweplayaga.me'
port = 9999
cpuRegs = {'rax':'','rbx':'','rcx':'','rdx':'','rsi':'','rdi':'','r8':'','r9':'','r10':'','r11':'','r12':'','r13':'','r14':'','r15':''}
finalRegs = {'rax':'','rbx':'','rcx':'','rdx':'','rsi':'','rdi':'','r8':'','r9':'','r10':'','r11':'','r12':'','r13':'','r14':'','r15':''}
fregs = 15
s = Sock(TCP)
s.timeout = 999
s.connect(host,port)
data = s.readUntil('bytes:')
#data = s.read(sz)
#data = s.readAll()
sz = 0
for r in data.split('\n'):
for rk in cpuRegs.keys():
if r.startswith(rk):
cpuRegs[rk] = r.split('=')[1]
if 'bytes' in r:
sz = int(r.split(' ')[3])
binary = data[-sz:]
code = []
print '[',binary,']'
print 'given size:',sz,'bin size:',len(binary)
print cpuRegs
for r in cpuRegs.keys():
code.append('mov %s, %s' % (r, cpuRegs[r]))
#print code
fd = open('code.asm','w')
fd.write('\n'.join(code)+'\n')
fd.close()
Capstone().dump('x86','64',binary,'code.asm')
print 'Compilando ...'
os.popen('nasm -f elf64 code.asm')
os.popen('ld -o code code.o ')
print 'Ejecutando ...'
fd = os.popen("gdb code -ex 'r' -ex 'i r' -ex 'quit'",'r')
for l in fd.readlines():
for x in finalRegs.keys():
if x in l:
l = l.replace('\t',' ')
try:
i = 12
spl = l.split(' ')
if spl[i] == '':
i+=1
print 'reg: ',x
finalRegs[x] = l.split(' ')[i].split('\t')[0]
except:
print 'err: '+l
fregs -= 1
if fregs == 0:
#print 'sending regs ...'
#print finalRegs
buff = []
for k in finalRegs.keys():
buff.append('%s=%s' % (k,finalRegs[k]))
print '\n'.join(buff)+'\n'
print s.readAll()
s.write('\n'.join(buff)+'\n\n\n')
print 'waiting flag ....'
print s.readAll()
print '----- yeah? -----'
s.close()
fd.close()
s.close()
- Hacking App
- Hack Tools For Games
- Hacking Tools Online
- Pentest Tools Android
- Free Pentest Tools For Windows
- Hacker Tools Github
- Hacker Tools For Ios
- Nsa Hacker Tools
- Hack Tools For Windows
- Hacker Tools Apk
- Hack Tools Pc
- Hacking Tools For Mac
- Pentest Tools Linux
- Hacker Tools Apk
- Tools Used For Hacking
- Hacker Tools 2019
- Pentest Box Tools Download
- Pentest Tools For Android
- Hacking Tools 2020
- Hack Rom Tools
- Hacker Tools 2019
- Hack Tools Download
- Free Pentest Tools For Windows
- Hacking Tools Free Download
- Physical Pentest Tools
- Hak5 Tools
- Hacker Tools Free Download
- Hacker Hardware Tools
- Pentest Tools
- Pentest Tools
- Bluetooth Hacking Tools Kali
- Hacks And Tools
- Ethical Hacker Tools
- Hacker Tools Windows
- New Hack Tools
- Hacking Tools Online
- Hacking Tools
- Hack Tools For Mac
- Hacker Tools 2020
- Hacking Tools For Beginners
- New Hack Tools
- Github Hacking Tools
- Hacking Tools Windows
- Pentest Tools Alternative
- Hack Tools
- Hack Tools
- New Hack Tools
- Hacker Tools Github
- Android Hack Tools Github
- Pentest Tools Alternative
- Best Pentesting Tools 2018
- Hacker Tools For Pc
- Hacker Tools Mac
- Free Pentest Tools For Windows
- Pentest Tools
- How To Hack
- Hacking Tools For Windows Free Download
- Pentest Tools Free
- Hacker Tools Linux
- Pentest Tools For Mac
- Hack Tools For Games
- Hacking Tools And Software
- How To Hack
- Hacking Tools Windows 10
- Hack Tools For Pc
- Hacking Tools Free Download
- Tools For Hacker
- Hacking Tools Free Download
- Install Pentest Tools Ubuntu
- Hacker Tools Hardware
- Pentest Tools Github
- Ethical Hacker Tools
- Hacker Tools Online
- How To Make Hacking Tools
- Best Pentesting Tools 2018
- Hack App
- Hacker Tools
- Hacking Tools
- Pentest Tools Apk
- Hacking Tools For Games
- Hacking Tools Download
- Hacker Hardware Tools
- Hack Website Online Tool
- Best Hacking Tools 2020
- Free Pentest Tools For Windows
- How To Make Hacking Tools
- Hack Apps
- Hacks And Tools
- Tools 4 Hack
- Best Hacking Tools 2020
- Hacking Tools Free Download
- Hacking Tools Online
- Hack Tools
- Pentest Tools Linux
- Hacking Tools Hardware
- Hacking Tools Hardware
- Pentest Tools For Mac
- Best Hacking Tools 2020
- Hacking Tools For Kali Linux
- Pentest Tools Apk
- Pentest Tools For Windows
- Hack Tools 2019
- Hacker Tools For Pc
- Hack Tools Pc
- Hacking Tools 2020
- Hackers Toolbox
- Pentest Tools
- Hackrf Tools
- Ethical Hacker Tools
- What Are Hacking Tools
- New Hack Tools
- Hacking Tools Name
- Hacking Tools For Beginners
- Hack Tool Apk
No comments:
Post a Comment