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 Apps
- Hacking Tools Hardware
- Pentest Automation Tools
- Pentest Tools
- Hacking Tools For Pc
- Pentest Tools For Mac
- Hacker Tools For Mac
- Hacks And Tools
- Kik Hack Tools
- Hacker Tools Software
- Blackhat Hacker Tools
- Hacker Tools For Ios
- Hacking Tools Mac
- Hacking Tools 2019
- Pentest Tools Download
- Hacking Tools Software
- Pentest Tools Free
- Pentest Tools Download
- World No 1 Hacker Software
- Hacking Tools 2019
- Hacker Tools Linux
- Pentest Tools Website Vulnerability
- Hack Tools For Ubuntu
- Hacking Tools Usb
- Hacking Tools Online
- Hacking Tools 2020
- Hack Tools
- Hacking Tools Software
- Black Hat Hacker Tools
- Hacker Tools Free
- Hack Tools
- Hacking Tools Hardware
- Pentest Tools
- What Are Hacking Tools
- Best Pentesting Tools 2018
- Pentest Tools Review
- Hacker Tools Software
- Hack Tools For Mac
- Pentest Tools For Ubuntu
- Best Pentesting Tools 2018
- Hacker Tools Github
- Pentest Recon Tools
- Hacker Tools Online
- Pentest Box Tools Download
- Usb Pentest Tools
- Hack Tools For Windows
- Underground Hacker Sites
- Hack Tools Download
- Ethical Hacker Tools
- Hacking Tools For Windows Free Download
- Hacker Tools Hardware
- Hacker Tools For Pc
- Hacking Tools For Beginners
- Pentest Tools Find Subdomains
- Hack Tools
- Hacking Tools For Games
- Hacker Tools Github
- Hacking Tools Kit
- Hack Tools Github
- Hacking Tools Name
- Pentest Automation Tools
- Hacker Tools
- Hacker Hardware Tools
- Tools For Hacker
- Pentest Tools Github
- Hacking Tools For Windows 7
- Pentest Tools Free
- Hacking Tools And Software
- Hacker Tools For Ios
- Hacking Tools For Windows Free Download
- Hacker Security Tools
- Hack Rom Tools
- Termux Hacking Tools 2019
- Pentest Automation Tools
- Pentest Tools For Android
- Hack App
- Hacking Tools Windows 10
- What Are Hacking Tools
- Pentest Tools Github
- Pentest Tools Port Scanner
- Pentest Tools Subdomain
- Pentest Tools
- Pentest Tools Open Source
- Hacking Tools Windows
- Easy Hack Tools
- Hacking Tools For Mac
- Pentest Automation Tools
- Hacking Tools Software
- Hacker Search Tools
- Pentest Tools Alternative
- Hacker
- Pentest Tools For Mac
- Hacking Tools For Mac
- Hacking Tools Free Download
- Hack Apps
No comments:
Post a Comment