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()
More info
- Hacker Tools For Ios
- Hacker Techniques Tools And Incident Handling
- Top Pentest Tools
- Hacker Techniques Tools And Incident Handling
- Best Pentesting Tools 2018
- Pentest Tools For Ubuntu
- Bluetooth Hacking Tools Kali
- Hak5 Tools
- Pentest Tools Linux
- Hacker Tools Mac
- Hacking Tools For Pc
- Hacks And Tools
- Hacking Tools Free Download
- Hacking Tools For Pc
- Pentest Tools Framework
- Pentest Tools Url Fuzzer
- Hacking Tools Online
- Hacking Tools For Kali Linux
- Hacking Tools Pc
- Easy Hack Tools
- Pentest Tools Kali Linux
- Hacking Tools
- Hack Tools 2019
- Free Pentest Tools For Windows
- Install Pentest Tools Ubuntu
- Hacking Tools For Mac
- Hacker Tools Online
- Pentest Tools Subdomain
- Pentest Tools List
- Top Pentest Tools
- Hacker Tools Windows
- Hack Tools Github
- Hacking Tools For Mac
- Ethical Hacker Tools
- Pentest Tools Free
- Hacking Tools Windows 10
- World No 1 Hacker Software
- Black Hat Hacker Tools
- Hacker Search Tools
- Pentest Reporting Tools
- Termux Hacking Tools 2019
- Android Hack Tools Github
- Nsa Hack Tools Download
- What Is Hacking Tools
- Pentest Tools Free
- Pentest Tools Website
- Hacker Tools Hardware
- Hacker Tools 2019
- Pentest Tools Android
- Hacker Tools 2019
- Pentest Tools Open Source
- Hacker Tools For Pc
- Pentest Tools For Android
- Hacking Tools For Mac
- Hack Tool Apk No Root
- Hacker Tools 2019
- Pentest Reporting Tools
- Usb Pentest Tools
- Pentest Tools Framework
- Pentest Tools Github
- Hacker Tools 2020
- Pentest Tools Windows
- Pentest Tools
- Hacker Tools Online
No comments:
Post a Comment