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 word
- Hacking Tools Download
- Nsa Hack Tools Download
- Usb Pentest Tools
- Best Pentesting Tools 2018
- Hacking Tools For Windows 7
- Hacker Security Tools
- Install Pentest Tools Ubuntu
- Hacking Tools Github
- Pentest Tools Linux
- Hacker Tool Kit
- Pentest Tools Find Subdomains
- Hacking Tools For Mac
- Hacking Tools For Beginners
- Hacking Tools For Games
- Hacking App
- Hacker Tools Github
- Pentest Tools Alternative
- Hacking Tools Kit
- Hacker Tools Github
- Hacker
- Hacker Tools Mac
- Hacking Tools For Pc
- Pentest Tools Website
- Hack Tools Github
- Pentest Tools Find Subdomains
- Hacker Tools For Pc
- Blackhat Hacker Tools
- Pentest Tools Apk
- Hacker Tools Apk
- Hacking Tools For Windows 7
- Hack Tools Pc
- Hacking Tools For Pc
- Hacker Tools Hardware
- Hacker Tools For Mac
- Blackhat Hacker Tools
- Hacker Tools For Ios
- Nsa Hack Tools
- Nsa Hack Tools
- Hack And Tools
- Hacker Hardware Tools
- Hacker Tools Software
- Pentest Tools Review
- Pentest Tools Subdomain
- Physical Pentest Tools
- Pentest Tools Open Source
- Hacking Tools Github
- Tools 4 Hack
- Hack Tool Apk
- Pentest Tools Open Source
- Pentest Tools Website
- Hacker Tools Online
- Free Pentest Tools For Windows
- Hack Apps
- Hackrf Tools
- Pentest Tools Website Vulnerability
- Free Pentest Tools For Windows
- Hacking Tools For Kali Linux
- Free Pentest Tools For Windows
- Hacker Tools Hardware
- Pentest Tools Framework
- Hacking Tools Online
- Pentest Tools Review
- Pentest Tools Online
- Hacking Tools For Kali Linux
- Free Pentest Tools For Windows
- Hacking App
- Hack Tools Mac
- Wifi Hacker Tools For Windows
- Hack Apps
- Install Pentest Tools Ubuntu
- Hack Apps
- Pentest Tools Nmap
- Pentest Recon Tools
- Hacking Tools Windows
- Hacker
- Hacker Tool Kit
- Hacker
- World No 1 Hacker Software
- Pentest Tools Nmap
- Best Pentesting Tools 2018
- Hacks And Tools
- Pentest Tools Nmap
- Hacking Tools For Kali Linux
- Hack Tools Pc
- Usb Pentest Tools
- Pentest Tools Alternative
- New Hack Tools
- Hack Tools For Windows
- Hacking Tools Kit
- Hacking Tools For Kali Linux
- Hacker
- Tools Used For Hacking
- Computer Hacker
- Pentest Tools Nmap
- Tools For Hacker
- Hackers Toolbox
- Hack Rom Tools
- Best Pentesting Tools 2018
- Hacker Tools Free
- Github Hacking Tools
- Underground Hacker Sites