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()
Read more
- Hacker Tools For Windows
- Pentest Tools For Mac
- Hack App
- Hack Tools Pc
- Hak5 Tools
- Hacking Tools For Kali Linux
- Hack Tools
- Pentest Box Tools Download
- Pentest Tools Android
- Hacker Tools Software
- Pentest Tools Review
- Pentest Tools Port Scanner
- Hacker Tools For Pc
- Hacking Tools For Windows 7
- Underground Hacker Sites
- Hack App
- Hacker Tools Software
- Pentest Tools For Mac
- Pentest Tools Kali Linux
- Hacker Tools List
- Hacking Tools Name
- Pentest Tools Free
- Pentest Tools For Ubuntu
- Hack And Tools
- Pentest Tools Free
- Pentest Tools Kali Linux
- Hack Tools Mac
- Hacker Tools
- Pentest Tools Linux
- Tools Used For Hacking
- Hacking Tools Github
- Hacker Search Tools
- Hacking Tools Name
- Tools For Hacker
- Hack Apps
- Pentest Tools Website
- What Is Hacking Tools
- Hack Tools Github
- Hacking Tools For Windows 7
- Hak5 Tools
- Hacking Tools Online
- Pentest Reporting Tools
- Hacking Tools For Windows Free Download
- Computer Hacker
- Pentest Tools Download
- Pentest Tools For Windows
- Pentest Tools Windows
- Pentest Tools Open Source
- Hacking Tools Free Download
- Pentest Box Tools Download
- Hacking Tools 2020
- What Are Hacking Tools
- Pentest Tools Alternative
- Pentest Tools For Android
- Growth Hacker Tools
- Hacker Tools For Pc
- Hacker Tools 2020
- Hack App
- Hacker Tools Github
- Usb Pentest Tools
- Hacker Security Tools
- Pentest Reporting Tools
- Hacking Tools For Kali Linux
- Hack App
- Hacking Tools Kit
- Hack And Tools
- Hacking Tools For Kali Linux
- Hacker Tools Apk
- Hacker
- Hack Tools For Windows
- Hacker Tools For Ios
- Hack Tools For Windows
- Pentest Reporting Tools
- Hacker Tools For Pc
- What Are Hacking Tools
- How To Install Pentest Tools In Ubuntu
- Pentest Tools For Android
- Pentest Tools Review
- Pentest Tools For Android
- Hack Tools Github
- Hacker Tools
- Pentest Tools Online
- Hack And Tools
- Hackers Toolbox
- Hackers Toolbox
- Hacking Tools Windows 10
- Hacks And Tools
- Hack Tools For Games
- Pentest Reporting Tools
- Hacker Tools For Mac
- Hacker Tools Github
- Hacker Tools Free Download
- Hacking Tools Github
- Hacker Tools 2019
- World No 1 Hacker Software
- Underground Hacker Sites
- Tools For Hacker
- Hack Tools For Pc
- Pentest Tools Open Source
- Pentest Tools Find Subdomains
- Pentest Box Tools Download
- Hacking Tools Windows 10
- Hack Tools Download
- Bluetooth Hacking Tools Kali
- Hacker Tools Online
- Hacking Tools Name
- Pentest Tools For Ubuntu
No comments:
Post a Comment