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()
Related articles
- Pentest Tools Windows
- Hack Tools For Games
- Pentest Tools Android
- Hack Tools For Pc
- Hacking Tools Hardware
- Hacking Tools For Games
- Pentest Automation Tools
- Hacking Tools For Windows Free Download
- World No 1 Hacker Software
- Hackers Toolbox
- Pentest Tools Bluekeep
- Physical Pentest Tools
- Wifi Hacker Tools For Windows
- Hack Tools For Mac
- Hacker Tools For Mac
- Pentest Tools Android
- Hacker Techniques Tools And Incident Handling
- Hacker Security Tools
- Pentest Tools Free
- Hacking Apps
- Hacking Tools Kit
- Hack Tools
- Pentest Tools For Android
- Pentest Tools For Ubuntu
- Pentest Tools Windows
- Hacking Tools Windows
- Hacking Tools
- Hacking Tools Github
- Pentest Tools Alternative
- Pentest Tools Tcp Port Scanner
- Hacking Tools Windows
- Ethical Hacker Tools
- Nsa Hack Tools Download
- New Hacker Tools
- Nsa Hack Tools
- Blackhat Hacker Tools
- Hacker Tools
- Hack Tools For Windows
- Hack Tools Github
- Github Hacking Tools
- Physical Pentest Tools
- Hacking Tools For Windows 7
- Physical Pentest Tools
- Pentest Tools Download
- Hack Tools For Windows
- Pentest Tools Framework
- Hacking Tools For Beginners
- Hack Tools Online
- Pentest Tools Open Source
- Black Hat Hacker Tools
- New Hack Tools
- Pentest Tools Url Fuzzer
- Hacker Tools Free Download
- How To Hack
- Bluetooth Hacking Tools Kali
- Install Pentest Tools Ubuntu
- Hack Tools Online
- Pentest Tools Find Subdomains
- Hacker Tools Software
- Hacker Tools Free Download
- Tools 4 Hack
- Pentest Tools Website
- Nsa Hacker Tools
- Hacker Tools
- New Hack Tools
- Nsa Hacker Tools
- Hackers Toolbox
- Hacking Tools For Windows
- Hack Tools
- Hacking Tools For Mac
- Hack Tools For Windows
- Hacker Tools Free Download
- Hack Apps
- Pentest Tools Framework
- Wifi Hacker Tools For Windows
- Pentest Tools Online
- Hackrf Tools
- Termux Hacking Tools 2019
- Hacking Tools Kit
- Android Hack Tools Github
- Hacker Tools Apk Download
- Hack Tool Apk
- Nsa Hacker Tools
- Pentest Tools Framework
- Hacking Tools Download
- Pentest Tools Free
- Hacker Tools Windows
- Pentest Tools Apk
- Hack Tools Download
- What Is Hacking Tools
- Nsa Hack Tools
- Pentest Tools Review
- Hacker Tools List
- New Hacker Tools
- Pentest Tools Apk
No hay comentarios:
Publicar un comentario