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()
Continue reading
- Hacking Tools Download
- Pentest Box Tools Download
- Hacking Tools Name
- Hacker Tools Linux
- Hacking Tools For Games
- Hack Tools
- Hacking Tools For Windows 7
- Hacking Tools
- How To Install Pentest Tools In Ubuntu
- Hack Website Online Tool
- Pentest Tools Github
- Hacker Tools Online
- Hacker Tools For Ios
- Hacking Tools For Beginners
- Black Hat Hacker Tools
- Hacking Tools Kit
- How To Hack
- Hack Tools For Ubuntu
- Pentest Tools Url Fuzzer
- Hack Tools Download
- Hacking Tools 2020
- Pentest Tools Free
- Hacker Tools For Ios
- Hacks And Tools
- Pentest Reporting Tools
- World No 1 Hacker Software
- Pentest Tools Kali Linux
- Hack Tools
- Hacker Tools 2019
- Hacker Tools Apk Download
- Bluetooth Hacking Tools Kali
- Hacker Tools Hardware
- Github Hacking Tools
- Hacking Tools Hardware
- Termux Hacking Tools 2019
- Kik Hack Tools
- Hack Tools Mac
- Nsa Hacker Tools
- Hacker Techniques Tools And Incident Handling
- Nsa Hack Tools Download
- Hacker Tools Apk Download
- Hacker Techniques Tools And Incident Handling
- Hacker Tools For Windows
- Pentest Reporting Tools
- Pentest Tools Free
- Pentest Tools For Ubuntu
- Pentest Tools Online
- Hacking Tools For Beginners
- Hacker Tools For Ios
- New Hack Tools
- Hacker Tools Hardware
- Pentest Tools List
- Free Pentest Tools For Windows
- Growth Hacker Tools
- Hack App
- Pentest Tools Nmap
- Hack And Tools
- Pentest Automation Tools
- Hacking Tools Software
- Hacking Tools Github
- Hacker Tools For Mac
- Easy Hack Tools
- Hack App
- Hacker Search Tools
- Bluetooth Hacking Tools Kali
- Termux Hacking Tools 2019
- Hacking Tools For Windows Free Download
- Wifi Hacker Tools For Windows
- Hack Tools
- Hacker Tools Free
- Pentest Recon Tools
- Pentest Tools Open Source
- Hacker Tools Free
- Pentest Tools List
- Pentest Tools Subdomain
No comments:
Post a Comment