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()
- Hacking Tools Name
- Pentest Tools For Windows
- Hacker Tools Windows
- Pentest Automation Tools
- Pentest Tools Free
- Hacking Tools And Software
- Pentest Reporting Tools
- Pentest Tools Subdomain
- Hacking Tools Usb
- Pentest Tools For Mac
- Hacker Tools Linux
- Pentest Tools Apk
- Hacking Apps
- Hacking Tools For Windows 7
- Hacker Tools List
- Pentest Tools Url Fuzzer
- World No 1 Hacker Software
- Hacking Tools Github
- Hacking Tools For Beginners
- Hacker Techniques Tools And Incident Handling
- Nsa Hack Tools Download
- Hack And Tools
- Physical Pentest Tools
- Hacker Tools Software
- Hacker Tool Kit
- Hacker Tools Apk
- Hack Tools For Games
- Hack Rom Tools
- Pentest Tools For Android
- Pentest Tools Alternative
- Beginner Hacker Tools
- Hacking Tools 2020
- Hacking Tools For Windows Free Download
- Hacking Tools For Beginners
- How To Hack
- Hacking Tools Kit
- How To Install Pentest Tools In Ubuntu
- Hack Tool Apk No Root
- World No 1 Hacker Software
- Pentest Tools Linux
- Pentest Tools Subdomain
- Pentest Tools Android
- Install Pentest Tools Ubuntu
- Hacker Tools Free Download
- Hack Tools Pc
- Pentest Tools Subdomain
- Hacking Tools For Mac
- Hack Tools
- What Is Hacking Tools
- Pentest Tools Subdomain
- Hacker Tools For Pc
- Hacking Tools For Pc
- Termux Hacking Tools 2019
- Hack Tools For Mac
- Pentest Reporting Tools
- Hacking Tools For Kali Linux
- Hacking Tools Pc
- Hacking Tools Hardware
- Hacking Apps
- Github Hacking Tools
- Hack Tools
- Hacker Tools Github
- New Hacker Tools
- Pentest Tools Website
- Hack Tool Apk No Root
- Hacking Tools
- How To Hack
- Hacker Tools Apk
- Hak5 Tools
- Top Pentest Tools
- Hacking Apps
- Pentest Tools Review
- Hacking Tools Mac
- Pentest Reporting Tools
- Pentest Tools For Mac
- Usb Pentest Tools
- Hacker Tools For Windows
- Hack Tools
- Hacking App
No comments:
Post a Comment