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()
- Pentest Tools List
- Hacker Tools Free Download
- Hack Tools 2019
- Hacking Tools
- How To Hack
- Hack Tools For Mac
- Install Pentest Tools Ubuntu
- Hacking Tools For Windows 7
- Top Pentest Tools
- Pentest Box Tools Download
- Pentest Tools Url Fuzzer
- Hacking Tools For Beginners
- Bluetooth Hacking Tools Kali
- Hack Tools For Windows
- Hack Rom Tools
- Best Hacking Tools 2019
- Best Pentesting Tools 2018
- Pentest Tools For Android
- Hack Tool Apk
- Hacking Tools Pc
- Free Pentest Tools For Windows
- Hacker Tools Apk Download
- Pentest Tools Download
- Hack Tools 2019
- Pentest Tools For Android
- Termux Hacking Tools 2019
- Hack Tools Download
- Hacking Tools Software
- Hacker Tools Free Download
- Hacking App
- Black Hat Hacker Tools
- Pentest Tools Android
- Hacker Tools Linux
- Pentest Tools For Windows
- Underground Hacker Sites
- Hack Tools Pc
- Hackers Toolbox
- Pentest Tools Kali Linux
- Hacker Tools For Windows
- Hacker Tools For Windows
- Github Hacking Tools
- Hacking Tools 2019
- Hacking Tools Windows
- Hacker Tools Free
- Computer Hacker
- Pentest Tools Open Source
- Pentest Tools Linux
- Pentest Tools Android
- Hack And Tools
- Hacker Tools Linux
- Hack Tools For Mac
- Hack Tools
- Pentest Tools Online
- Hacker Tools Software
- Hackers Toolbox
- Hacking Tools And Software
- Hacker Tools For Pc
- Hack Tools For Windows
- Hacking Tools 2020
- Hack Tools Online
- Bluetooth Hacking Tools Kali
- Pentest Tools Review
- Bluetooth Hacking Tools Kali
- Hacker Security Tools
- Hacking Tools Online
- Hacker Tools Online
- New Hacker Tools
- Kik Hack Tools
No comments:
Post a Comment