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 articles
- Nsa Hack Tools Download
- Hacker Search Tools
- How To Make Hacking Tools
- Hacking Tools For Pc
- Android Hack Tools Github
- Pentest Tools Url Fuzzer
- Pentest Tools Framework
- Hack Tools Mac
- World No 1 Hacker Software
- Wifi Hacker Tools For Windows
- Android Hack Tools Github
- Hacker Tools Hardware
- Pentest Tools
- Pentest Tools Github
- Hacking Tools Pc
- Hacking Tools For Pc
- Hacker Tools Apk Download
- Physical Pentest Tools
- Hackrf Tools
- Black Hat Hacker Tools
- New Hacker Tools
- Hacker Tools
- Hack App
- Hacker Tool Kit
- Pentest Tools Tcp Port Scanner
- Pentest Recon Tools
- Hacking Tools Windows
- Free Pentest Tools For Windows
- Hacking Tools For Windows
- Pentest Recon Tools
- Hacker Tools Apk Download
- Best Pentesting Tools 2018
- Pentest Tools Online
- Hack Tool Apk No Root
- Pentest Tools For Windows
- Hack Apps
- Hack Tool Apk No Root
- Game Hacking
- Hacker Tool Kit
- Hacker Tools Linux
- Pentest Tools For Ubuntu
- Hacking Tools Kit
- Pentest Tools List
- Tools For Hacker
- Hacking Tools For Windows 7
- World No 1 Hacker Software
- Usb Pentest Tools
- Hacking Tools For Windows
- Computer Hacker
- Hacker Search Tools
- Pentest Tools Tcp Port Scanner
- Hacking Tools For Kali Linux
- Hacker Techniques Tools And Incident Handling
- Hacker Tools Hardware
- Hacking Tools Software
- Nsa Hack Tools
- Hack Tools For Mac
- What Are Hacking Tools
- Hack Tools Mac
- Termux Hacking Tools 2019
- Hacking Tools Usb
- Pentest Automation Tools
- Hacking Tools For Windows Free Download
- Hacking Tools Pc
- Hak5 Tools
- Hack Website Online Tool
- Hacker Tools Windows
- Hacker Tools
- Pentest Tools Url Fuzzer
- Hacking Tools Windows 10
- Hacker Tools Github
- Pentest Tools For Android
- Pentest Tools Url Fuzzer
- Hacking Tools For Windows
- Hack Tool Apk
- Hacker Tools Software
- Hack Tools For Mac
- Usb Pentest Tools
- Pentest Tools Alternative
- Usb Pentest Tools
- Pentest Tools Apk
- Hacker Tools Linux
- Pentest Tools For Android
- Pentest Tools Github
- Pentest Reporting Tools
- Pentest Tools Nmap
- Hacker Tools Linux
- Hacker Techniques Tools And Incident Handling
- Pentest Tools For Mac
- Pentest Tools For Ubuntu
- Hacking Tools Software
- Hacker Search Tools
- Pentest Tools List
- Hack Tools Pc
- Hack Tools Pc
- Kik Hack Tools
- Ethical Hacker Tools
- Free Pentest Tools For Windows
- Hacking Tools Hardware
- Hacking Tools Github
- Hacking Tools Name
- Pentest Tools Website Vulnerability
- Hack Rom Tools
- Hacker Tools Mac
- Hack Tools
- Pentest Tools Linux
- How To Install Pentest Tools In Ubuntu
- Nsa Hack Tools
- Pentest Tools Review
- Hacker Tools Apk Download
No comments:
Post a Comment