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 Tools Mac
- Github Hacking Tools
- Hack Tools For Pc
- Pentest Tools Website Vulnerability
- Beginner Hacker Tools
- Best Hacking Tools 2019
- Pentest Tools Bluekeep
- Hack Website Online Tool
- Pentest Recon Tools
- How To Make Hacking Tools
- Pentest Tools Port Scanner
- Hacking Tools For Windows
- Pentest Tools Review
- Beginner Hacker Tools
- Tools Used For Hacking
- Hacking Tools 2019
- Hacking Tools Github
- Pentest Tools Tcp Port Scanner
- Hack Tools Download
- Hacking Tools Software
- Pentest Tools Nmap
- Pentest Tools Website Vulnerability
- Best Hacking Tools 2020
- How To Install Pentest Tools In Ubuntu
- Hacking Tools For Windows Free Download
- Hacking Tools For Mac
- Hacker Tools Software
- Pentest Reporting Tools
- Hacking Tools Mac
- Hack Tools For Mac
- Hack Tools For Games
- Pentest Tools Download
- Hack Tools For Windows
- Nsa Hack Tools Download
- Install Pentest Tools Ubuntu
- Hacker Tools Github
- How To Make Hacking Tools
- Hack Tools Online
- Hacker Tools For Pc
- New Hacker Tools
- Black Hat Hacker Tools
- Hacking Tools For Windows
- Usb Pentest Tools
- How To Make Hacking Tools
- Hacking Tools Download
- Hacking Tools Kit
- Best Pentesting Tools 2018
- Nsa Hack Tools
- Hacking Tools Kit
- Hack Tools
- Hacker Techniques Tools And Incident Handling
- Hack Tools
- Android Hack Tools Github
- Nsa Hack Tools
- Hack Tools Pc
- Hacking Tools For Kali Linux
- Pentest Tools Website
- Best Pentesting Tools 2018
- Hack Tools For Ubuntu
- Free Pentest Tools For Windows
- Pentest Tools Website Vulnerability
- Pentest Tools Linux
- Hacker Tools 2019
- Free Pentest Tools For Windows
- Hacker Tools Apk
- Pentest Tools Open Source
- How To Hack
- Pentest Tools Subdomain
- Pentest Tools Website
- Underground Hacker Sites
- Hacker Tools Windows
- Pentest Tools List
No hay comentarios:
Publicar un comentario
Nota: solo los miembros de este blog pueden publicar comentarios.