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 articles
- Pentest Tools Bluekeep
- Pentest Tools Online
- Blackhat Hacker Tools
- Hacker Tools Linux
- Hacker Tools Apk Download
- Hack Tools Online
- Pentest Tools Subdomain
- Hacker Tools Linux
- Hack Tool Apk No Root
- Pentest Tools Github
- Pentest Tools Url Fuzzer
- Pentest Box Tools Download
- Hacking Tools 2019
- Hacking Tools Pc
- Hacking Tools For Kali Linux
- Kik Hack Tools
- Pentest Tools Bluekeep
- Hacking Tools Windows
- Physical Pentest Tools
- Hack Tools For Mac
- Hacking Tools For Windows Free Download
- Hacking Tools Kit
- Hacker Security Tools
- Github Hacking Tools
- How To Make Hacking Tools
- Hacker Tools List
- Hacking Tools 2020
- Hack Tools Github
- Pentest Tools For Windows
- Hacker Tools
- Hacking Tools 2019
- Pentest Tools Android
- Pentest Tools Framework
- Hacking Tools Github
- Game Hacking
- Pentest Reporting Tools
- Pentest Tools Kali Linux
- Hacker Techniques Tools And Incident Handling
- Pentest Box Tools Download
- Hack Tools Online
- Hack Tools Mac
- Hacking Tools For Mac
- Hacker Tools For Ios
- Pentest Tools Website Vulnerability
- Hacking Tools For Mac
- Hacker Tools Linux
- Hacking Tools Name
- Pentest Tools Bluekeep
- Best Hacking Tools 2020
- Pentest Recon Tools
- Hacker Techniques Tools And Incident Handling
- Pentest Tools Kali Linux
- New Hacker Tools
- Wifi Hacker Tools For Windows
- Hak5 Tools
- Hacker Hardware Tools
- Pentest Tools Bluekeep
- Ethical Hacker Tools
- Hack Tools For Ubuntu
- Pentest Tools
- Pentest Tools Framework
- Hacker Tools For Ios
- How To Install Pentest Tools In Ubuntu
- Pentest Tools Nmap
- Tools 4 Hack
- Pentest Tools Website
- Pentest Tools Find Subdomains
- Easy Hack Tools
- New Hacker Tools
- Hacker Tools For Windows
- Hacker Tools 2020
- Pentest Tools Github
- Hacking Tools 2020
- Hacker Tools
- Pentest Tools Alternative
- How To Hack
- Hack Tool Apk
- Best Hacking Tools 2019
- Hack Tools
- Hacker Tools For Mac
- Hack And Tools
- Hack Tools For Games
- Hacking Tools For Windows
- Hacking Tools For Pc
- Hacker Tools Windows
- Hack Tool Apk No Root
- Pentest Tools Download
- Game Hacking
- Pentest Tools Download
- Pentest Box Tools Download
- Pentest Tools Url Fuzzer
- Pentest Tools Download
- Hack Website Online Tool
- Hacking Tools Github
- Hacking Tools For Windows Free Download
- Hacker Tools Hardware
- What Is Hacking Tools
- Best Hacking Tools 2019
- Hacking Tools For Windows 7
- Pentest Tools Url Fuzzer
- Tools Used For Hacking
- New Hack Tools
No comments:
Post a Comment