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()
- Ethical Hacker Tools
- Pentest Tools Linux
- Growth Hacker Tools
- Pentest Tools Subdomain
- Hack Tool Apk No Root
- Hack Tools For Ubuntu
- Hacking App
- Hack Tools For Pc
- Pentest Tools For Windows
- Hacker Tools For Mac
- What Are Hacking Tools
- Pentest Tools For Android
- Pentest Tools Apk
- Nsa Hack Tools Download
- Hack Tools For Pc
- Hacker Tools Apk
- How To Install Pentest Tools In Ubuntu
- Hack Tools For Ubuntu
- Hacking Tools Download
- Hacker Tools For Mac
- Termux Hacking Tools 2019
- Hackers Toolbox
- Hack Tools For Ubuntu
- Hacking Tools For Pc
- Hacker Tools Linux
- Hacking Tools Windows
- Blackhat Hacker Tools
- Hack Tools For Ubuntu
- Hack Tool Apk
- Tools 4 Hack
- Hack Tools Online
- Android Hack Tools Github
- Pentest Recon Tools
- Hack Apps
- Hacker Tools For Mac
- Tools 4 Hack
- Hacker Tools Mac
- Install Pentest Tools Ubuntu
- Hacking Tools Download
- Hacker Tools List
- Pentest Box Tools Download
- Hacking Tools For Windows
- Pentest Reporting Tools
- Hacking Tools Kit
- Hacker Tool Kit
- Pentest Tools Tcp Port Scanner
- Pentest Tools List
- Usb Pentest Tools
- Hacker Tools Linux
- Usb Pentest Tools
- Nsa Hacker Tools
- Hacks And Tools
- Hackrf Tools
- Hack Rom Tools
- Github Hacking Tools
- Physical Pentest Tools
- Hacker Tools Online
- Hacking App
- Hacker Tools For Windows
- Hack Tools 2019
- Pentest Tools Review
- Top Pentest Tools
- Hacker Tools Hardware
- Beginner Hacker Tools
- Pentest Tools For Mac
- Pentest Tools List
- Pentest Tools Url Fuzzer
- Best Pentesting Tools 2018
- Hack Tools For Windows
- Pentest Tools For Android
- Pentest Tools Android
- Hacker Hardware Tools
- Hacker Tools Online
- Hackrf Tools
- Hacker Tools Windows
- Pentest Tools Subdomain
- Pentest Tools Url Fuzzer
- Hack Tools
- Pentest Recon Tools
- Hacking Tools Software
- Pentest Tools Find Subdomains
- Hacking Tools For Windows 7
- Hacker Tools Hardware
- Hacking Tools Github
- Hacker Tools Mac
- Hacker Security Tools
- Nsa Hack Tools Download
- Hak5 Tools
- Free Pentest Tools For Windows
- Hacks And Tools
- Pentest Tools
- Termux Hacking Tools 2019
- Pentest Tools Alternative
- Pentest Tools Alternative
- Hack Apps
- Hack Tools Mac
- Hak5 Tools
- Hacking Tools Windows
- Hacker Tools List
- Hacking Tools Windows
- Game Hacking
- Hacker Security Tools
- Hacker Tools Linux
- Best Pentesting Tools 2018
- Hacker Tools Apk Download
- Hacking Tools
- Nsa Hacker Tools
- Tools 4 Hack
- Hacker Tools Online
- Bluetooth Hacking Tools Kali
- Install Pentest Tools Ubuntu
- Pentest Tools Review
- Hackrf Tools
- Hacker Tools Github
- Hack Tools For Ubuntu
- Pentest Reporting Tools
- Pentest Tools
- Pentest Tools Website Vulnerability
- Pentest Tools Free
- Hacking Tools Hardware
- Hacker Tools Mac
- Easy Hack Tools
- Tools 4 Hack
- Hack Website Online Tool
- Best Hacking Tools 2020
0 comments:
Post a Comment