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()
More info
- Pentest Recon Tools
- Hacking Tools For Windows 7
- Hacker Tools
- Hack Tools For Ubuntu
- Pentest Reporting Tools
- Game Hacking
- Best Hacking Tools 2019
- Pentest Box Tools Download
- Computer Hacker
- Hacker Tools Windows
- Hacker Hardware Tools
- Nsa Hack Tools Download
- Hacking Tools For Windows Free Download
- Ethical Hacker Tools
- Hacking Tools Download
- Hacker Tools 2020
- Pentest Tools Open Source
- Pentest Automation Tools
- Hack Tools Download
- Hacker Tools Online
- Hack Tools For Ubuntu
- Hacking Tools Online
- Pentest Tools For Android
- Pentest Tools Linux
- Top Pentest Tools
- Hack Tools For Ubuntu
- Hacking Tools Pc
- Pentest Tools Kali Linux
- Pentest Tools Website
- Pentest Tools Free
- Pentest Tools Linux
- Pentest Tools Linux
- Hacker Tool Kit
- Github Hacking Tools
- Hacking Apps
- Pentest Box Tools Download
- Hacker Tools Apk
- Hacking Tools For Windows
- Hacker Tools For Mac
- Hacker Tools Windows
- Physical Pentest Tools
- Pentest Tools For Mac
- Hacker Search Tools
- Pentest Tools Online
- Hack Tools For Ubuntu
- Ethical Hacker Tools
- Hacking Tools For Games
- Hacking Tools And Software
- Hacker Techniques Tools And Incident Handling
- Hacking Tools
- Pentest Tools Tcp Port Scanner
- Bluetooth Hacking Tools Kali
- Github Hacking Tools
- Hack Tools Github
- Underground Hacker Sites
- Hacker Search Tools
- Hacker Tools Apk
- Hacking Tools For Windows
- Tools Used For Hacking
- Best Pentesting Tools 2018
- What Are Hacking Tools
- Pentest Tools Website Vulnerability
- Hacker Tools Apk
- Hacking Tools For Windows Free Download
- Github Hacking Tools
- Tools For Hacker
- Hacker Search Tools
- Pentest Tools Website
- Hacking Tools For Windows 7
- Hack Tools Mac
- Hacker Tools Github
- Hacking Tools Pc
- Physical Pentest Tools
- Hacker Hardware Tools
- Hacking Tools Free Download
- Pentest Box Tools Download
- Android Hack Tools Github
- Hacker Search Tools
- Tools For Hacker
- Pentest Tools Review
- Hacking Tools For Windows Free Download
- Tools Used For Hacking
- Hacker Tools Free
- Pentest Tools
- Hacker Tools For Mac
- Pentest Tools Tcp Port Scanner
- Hacking Tools Name
- What Is Hacking Tools
- Hacking Tools 2019
- Pentest Tools Nmap
- Nsa Hack Tools Download
- Hack Tools For Ubuntu
- Pentest Recon Tools
- Pentest Tools Open Source
- Pentest Tools Bluekeep
- Hacking Tools Pc
- Pentest Tools For Android
- Pentest Tools Android
- Hacking Tools For Pc
- Hackers Toolbox
- Game Hacking
- Tools Used For Hacking
- Nsa Hack Tools
- Bluetooth Hacking Tools Kali
- Hackrf Tools
- Pentest Tools For Android
- Hacking Tools For Games
- Hack Website Online Tool
- Game Hacking
- Pentest Tools Windows
- Pentest Recon Tools
- What Is Hacking Tools
- Physical Pentest Tools
- Ethical Hacker Tools
- Pentest Tools Url Fuzzer
- Hacker Tools For Pc
- Hak5 Tools
- Hack Tools For Windows
- Hacking Tools For Windows Free Download
- Pentest Automation Tools

Tidak ada komentar:
Posting Komentar