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
- Hacking Tools Download
- Growth Hacker Tools
- Hacking Apps
- Hack Apps
- Hacker Tools 2020
- Hacker Tools Online
- Hacking Tools For Games
- Hack And Tools
- Hacker Search Tools
- Pentest Automation Tools
- Hacks And Tools
- Hack And Tools
- Physical Pentest Tools
- How To Install Pentest Tools In Ubuntu
- Hack Apps
- Hack And Tools
- Hacking Tools Github
- Pentest Tools Kali Linux
- Hacking Tools Mac
- Hacker Techniques Tools And Incident Handling
- Hacker Tools 2019
- Best Pentesting Tools 2018
- Hacker Tools For Ios
- Pentest Tools Nmap
- Hacking Tools For Mac
- Hack Tools For Mac
- Tools 4 Hack
- Hacker Tools Free
- Blackhat Hacker Tools
- Hacking Tools Mac
- Nsa Hack Tools
- Hacking Tools Hardware
- Hack Tools Github
- Hacker Tools 2020
- New Hacker Tools
- Nsa Hack Tools Download
- Pentest Tools Review
- Hacking Tools 2020
- Physical Pentest Tools
- Hacker Tools Hardware
- Wifi Hacker Tools For Windows
- Hack Website Online Tool
- Pentest Tools Alternative
- Hacking Tools Hardware
- How To Install Pentest Tools In Ubuntu
- Hak5 Tools
- Pentest Tools Url Fuzzer
- Hack Tools
- Pentest Box Tools Download
- Hack Tools Pc
- Hacker Tools 2019
- Hacker Techniques Tools And Incident Handling
- New Hack Tools
- Hacker Tools Mac
- Physical Pentest Tools
- Blackhat Hacker Tools
- Hacker Tools 2020
- Hacking Tools For Windows
- Pentest Automation Tools
- Pentest Tools Open Source
- Pentest Reporting Tools
- World No 1 Hacker Software
- Hack Tools Github
- Hacking Tools For Kali Linux
- Easy Hack Tools
- Pentest Box Tools Download
- Best Hacking Tools 2019
- What Is Hacking Tools
- Hak5 Tools
- Nsa Hack Tools Download
- Hacking Tools
- Pentest Tools Url Fuzzer
- Best Hacking Tools 2020
- Hacking Tools Windows
- Hacker Tools List
- Hacking Tools Github
- Hacking Tools 2020
- Pentest Tools Review
- Best Hacking Tools 2019
- Underground Hacker Sites
- Hacking Tools For Windows Free Download
- Black Hat Hacker Tools
- Pentest Tools Nmap
- Hacking Tools Software
- Hacker Tools List
- Hacking Tools Kit
- Github Hacking Tools
- Tools For Hacker
- Hacker Tools Apk Download
- Best Hacking Tools 2020
- World No 1 Hacker Software
- Pentest Tools Nmap
- Pentest Tools For Android
- Pentest Tools Alternative
- Pentest Tools Linux
- Hacking Tools Name
- How To Install Pentest Tools In Ubuntu
- Pentest Tools Bluekeep
- Pentest Tools
- Hacker Tools For Pc
- Pentest Tools Github
- Free Pentest Tools For Windows
- Hacking Tools For Kali Linux
- Nsa Hack Tools Download
- Pentest Tools Alternative
- Computer Hacker
- Best Pentesting Tools 2018
- Pentest Tools Find Subdomains
No comments:
Post a Comment