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()
Read more
- Hacker Tools For Ios
- Tools Used For Hacking
- Pentest Tools Linux
- How To Hack
- Hacking Tools Github
- Hacker Security Tools
- Underground Hacker Sites
- Hacking Tools For Games
- Pentest Tools Github
- World No 1 Hacker Software
- Pentest Tools Kali Linux
- What Are Hacking Tools
- Install Pentest Tools Ubuntu
- Hack And Tools
- Hack Tools
- Hack Tools Pc
- Black Hat Hacker Tools
- Hacker Tools Mac
- Hacker Tools Apk Download
- Blackhat Hacker Tools
- Hacking Apps
- Game Hacking
- Hacking Tools For Windows 7
- Pentest Tools Nmap
- Hacker Tools
- Hacker Tools Github
- Hack Tools Pc
- Pentest Tools Alternative
- World No 1 Hacker Software
- Pentest Tools Github
- Pentest Tools Download
- Github Hacking Tools
- Hacking Tools Github
- New Hack Tools
- Pentest Tools Framework
- Pentest Tools Github
- Pentest Tools Download
- Hacker
- Pentest Automation Tools
- Best Hacking Tools 2020
- Hacks And Tools
- Pentest Tools Website
- Hack And Tools
- Hack Tools Online
- Hacker Tools For Pc
- Hacking Tools Windows
- Hack Website Online Tool
- What Is Hacking Tools
- How To Make Hacking Tools
- Hacker Security Tools
- Hacking Tools Windows 10
- Free Pentest Tools For Windows
- Hacker Tools Github
- Pentest Tools Port Scanner
- Hacker Security Tools
- Hack Tools
- Pentest Tools Port Scanner
- Hack Rom Tools
- Hacker Tools Hardware
- Hacking Tools For Windows Free Download
- What Are Hacking Tools
- Hack Tools Download
- Best Pentesting Tools 2018
- Hacking Tools For Pc
- Physical Pentest Tools
- Github Hacking Tools
- Hacking Tools Software
- Tools 4 Hack
- Hacking Tools Free Download
- Pentest Tools
- Ethical Hacker Tools
- Hacking Tools For Windows Free Download
- Easy Hack Tools
No comments:
Post a Comment
Note: only a member of this blog may post a comment.