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()
Related links
- Pentest Tools Kali Linux
- Hack Tool Apk
- Hak5 Tools
- Hacker Tools Apk Download
- Hacking Tools For Kali Linux
- Hacker Tools Apk Download
- Hack Tools For Windows
- Pentest Tools For Windows
- Hacker Tools Free
- Computer Hacker
- Hackrf Tools
- Hack Tools 2019
- Usb Pentest Tools
- Free Pentest Tools For Windows
- Hacking Tools Online
- Pentest Tools List
- Hack Tool Apk
- Pentest Tools For Ubuntu
- Black Hat Hacker Tools
- Hack Tools For Windows
- Install Pentest Tools Ubuntu
- Pentest Tools Alternative
- Hack Tools
- Pentest Tools Github
- Hack Tools Github
- World No 1 Hacker Software
- Hackrf Tools
- Pentest Tools Download
- Beginner Hacker Tools
- Hack Tools For Windows
- Pentest Tools Nmap
- Hak5 Tools
- Hacker Tools Windows
- Pentest Tools Url Fuzzer
- World No 1 Hacker Software
- Hacking Tools For Mac
- Hacking App
- Tools For Hacker
- Hacker Security Tools
- Hacking Tools Software
- Pentest Tools Open Source
- Hacker Tools 2020
- Pentest Tools Windows
- Hacking Tools Kit
- How To Make Hacking Tools
- Hack Rom Tools
- Pentest Tools For Windows
- Pentest Tools Url Fuzzer
- Hacker Tools 2019
- How To Hack
- Pentest Tools Kali Linux
- Hacking Tools Mac
- Top Pentest Tools
- Hacking Tools For Games
- Hacker Tools 2019
- Pentest Tools Tcp Port Scanner
- Pentest Box Tools Download
- Hacking Tools Windows
- Bluetooth Hacking Tools Kali
- Hackers Toolbox
- Pentest Tools Review
- What Are Hacking Tools
- Hacker Tools 2020
- Hacker Tools Free
- Pentest Box Tools Download
- Black Hat Hacker Tools
- Hacker Tools List
- Black Hat Hacker Tools
- Pentest Recon Tools
- Pentest Tools For Windows
- Hacking Tools For Windows 7
- Hacking Tools Pc
- Hacker Tools Free
- Wifi Hacker Tools For Windows
- Hack Tools Download
- Hacking Tools For Windows Free Download
- Hacker Techniques Tools And Incident Handling
- Hacker Tool Kit
- Hack Apps
- Hacker Tools 2020
- Beginner Hacker Tools
- Pentest Tools Android
- Hacker Tool Kit
- Tools For Hacker
- Hack Tools
- Underground Hacker Sites
- Hacker Tools Software
- Hacker Tools For Ios
- Best Pentesting Tools 2018
- Hack Tools For Ubuntu
- Hacking Tools For Kali Linux
0 komentar:
Posting Komentar