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()
- Pentest Reporting Tools
- Pentest Box Tools Download
- Hak5 Tools
- Hack Tools Online
- New Hacker Tools
- New Hacker Tools
- Hacking Apps
- Pentest Tools For Windows
- Hacker Tools For Pc
- Pentest Tools Url Fuzzer
- Hacker Tools Mac
- Best Hacking Tools 2019
- Hacking Tools Pc
- Hack App
- Pentest Tools Website
- Pentest Tools Download
- Hack Tools For Ubuntu
- Hacking Tools Online
- Hacking Tools Github
- Pentest Tools For Windows
- Wifi Hacker Tools For Windows
- Pentest Tools Free
- Hacker Tools For Mac
- Pentest Recon Tools
- Github Hacking Tools
- Hacking App
- Pentest Tools Free
- Github Hacking Tools
- Hacking Tools Pc
- Hacking Tools Online
- Pentest Tools Tcp Port Scanner
- Pentest Tools Subdomain
- Hacking Tools Name
- Pentest Tools Port Scanner
- Hacker Security Tools
- Hacker Tools 2019
- Hacker Tools 2020
- Hacking Apps
- Hacker Tools Mac
- Pentest Tools
- Pentest Tools Open Source
- Pentest Tools Android
- New Hack Tools
- Hacker Tools Free
- Hack Tools
- Hacker Tools Hardware
- Pentest Tools Download
- Kik Hack Tools
- Hack Tool Apk No Root
- Hack Tools
- Tools 4 Hack
- Hacking Tools Kit
- Pentest Tools Review
- Black Hat Hacker Tools
- Beginner Hacker Tools
- Github Hacking Tools
- Hacking Tools Windows
- Android Hack Tools Github
- Hacker Tools Apk Download
- How To Hack
- Underground Hacker Sites
- Pentest Tools Windows
- World No 1 Hacker Software
- Hacking Tools 2020
- Hack Website Online Tool
- Hacker Hardware Tools
- Hacker Security Tools
- Pentest Reporting Tools
- Hacking Apps
- Hacking Tools 2020
- Nsa Hack Tools Download
- Hacker Tools For Ios
- Hack Apps
- Pentest Tools For Mac
- Hacking Tools Mac
- Hacking Tools Github
- Hacking Tools For Games
- Pentest Tools Url Fuzzer
- Blackhat Hacker Tools
- Pentest Tools Alternative
- Pentest Tools Online
- Hack Tools 2019
- Hacking Tools For Games
- Best Hacking Tools 2019
- Pentest Tools Subdomain
- Hacker
- Pentest Tools Open Source
- Pentest Tools Apk
- Pentest Tools Tcp Port Scanner
- New Hacker Tools
- Pentest Tools Subdomain
- Hacker Tools Apk
- Hacking Tools 2020
- Hacker Tools Apk Download
- Hacking Tools Windows
- Hack Tools Download
- Hack Tool Apk
- Android Hack Tools Github
- Bluetooth Hacking Tools Kali
- Best Pentesting Tools 2018
- Pentest Tools Alternative
- Install Pentest Tools Ubuntu
- Hack App
- Pentest Tools
- Hacking App
- Hacker Tools Software
- Hacking Tools Online
- Hacker Tools Free Download
- Pentest Tools Apk
- Pentest Reporting Tools
- Hacker Tools
- Hacking Tools Kit
- Github Hacking Tools
- Pentest Tools Bluekeep
- Pentest Tools For Ubuntu
- Hacker Techniques Tools And Incident Handling
- Hack Tools Pc
- Underground Hacker Sites
- Pentest Reporting Tools
- Top Pentest Tools
- Hacker Tools Software
- Hacking Tools Hardware
- Hacks And Tools
- Hack Tools
- Tools 4 Hack
- Pentest Tools Download
- Hack Tools Github
0 comentários:
Postar um comentário