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()
Continue reading
- Hack And Tools
- Hacking Tools Pc
- Hacker Tools Hardware
- Tools Used For Hacking
- Hacking Tools Hardware
- Pentest Automation Tools
- Hack App
- Pentest Tools Url Fuzzer
- Hacker Tools Mac
- Pentest Tools Find Subdomains
- Hacker Hardware Tools
- What Are Hacking Tools
- Hacking Tools Pc
- Hacker Tools Software
- Hacker Tools For Ios
- Pentest Tools Url Fuzzer
- Pentest Tools Subdomain
- Pentest Tools Kali Linux
- Beginner Hacker Tools
- Hacker Tools Apk
- Blackhat Hacker Tools
- Hacker Tools 2020
- Pentest Tools Online
- Hacking Tools For Mac
- Pentest Tools Website Vulnerability
- Pentest Tools Nmap
- Pentest Reporting Tools
- Hacker Tools Hardware
- Hacker Security Tools
- Pentest Tools Windows
- Usb Pentest Tools
- Pentest Tools Github
- Hacking Tools Kit
- Hack And Tools
- Hacking Tools And Software
- Install Pentest Tools Ubuntu
- Hacking Tools Kit
- Pentest Tools Find Subdomains
- Hack Website Online Tool
- Pentest Tools Github
- Pentest Tools Review
- Pentest Tools Free
- Best Hacking Tools 2020
- Hack Website Online Tool
- Pentest Reporting Tools
- Hacking Tools Pc
- Pentest Tools
- Hacker Tools For Pc
- Hack And Tools
- Hacking Tools For Pc
- Game Hacking
- Hacking Tools Online
- Pentest Tools Website
- Hacking Tools For Pc
- Pentest Tools Review
- How To Make Hacking Tools
- What Are Hacking Tools
- Hacker Tools For Ios
- Black Hat Hacker Tools
- Wifi Hacker Tools For Windows
- Hacking Tools 2020
- Hacks And Tools
- World No 1 Hacker Software
- Hacking Tools Windows
- Hack Tools For Ubuntu
- Hacker Tools For Ios
- Hacker Tools 2019
- Hacking Tools Software
- Pentest Tools Framework
- Hacker Tools Mac
- Hacker Tools Apk
- Hacking Tools Name
- Hacking Tools Kit
- Hacker Tools Apk
- Pentest Tools Review
- Hack Tools For Windows
- Hacking Tools For Windows 7
- Game Hacking
- Hacker Tools For Windows
- Game Hacking
- Hacking Tools Usb
- Pentest Tools For Mac
No comments:
Post a Comment