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()
- Hacker Techniques Tools And Incident Handling
- Termux Hacking Tools 2019
- Hacker Search Tools
- How To Make Hacking Tools
- World No 1 Hacker Software
- Hack Tools Mac
- Growth Hacker Tools
- Android Hack Tools Github
- Game Hacking
- Usb Pentest Tools
- Hacking Tools 2020
- New Hack Tools
- Tools For Hacker
- Hacking Tools Github
- Github Hacking Tools
- Hak5 Tools
- Hack Tools Mac
- Easy Hack Tools
- Hacks And Tools
- Hack Tools Download
- Hack Tools Online
- Hacker Tools Online
- Hacker Security Tools
- Wifi Hacker Tools For Windows
- Easy Hack Tools
- Hacking Tools Kit
- Hacking Tools Windows
- Hacking Apps
- Hacker Search Tools
- Hacker Tools 2020
- Github Hacking Tools
- Termux Hacking Tools 2019
- Hacking Tools Mac
- Hack Tool Apk
- Pentest Tools Github
- Hack Tools
- Game Hacking
- Hacker Search Tools
- Hacking Tools For Windows 7
- Hacking Tools Software
- Hacker Tools Windows
- Hack Tool Apk
- Hack Tools
- Hacker Tools 2020
- Hacking Tools For Pc
- Hacking Tools And Software
- Hacking Tools Hardware
- Pentest Tools Online
- Pentest Tools Find Subdomains
- How To Make Hacking Tools
- Pentest Tools
- Hacker Tools Linux
- Hacker Tools
- Pentest Tools For Android
- Hack Tools
- Hack Tools For Ubuntu
- Game Hacking
- How To Install Pentest Tools In Ubuntu
- Hacker Security Tools
- Hack Tool Apk No Root
- Pentest Tools Kali Linux
- Best Hacking Tools 2019
- Nsa Hacker Tools
- Pentest Tools Subdomain
- Hacker Tools For Windows
- Usb Pentest Tools
- Pentest Tools Find Subdomains
- Hacking Tools Software
- Hack Tools 2019
- Hack Apps
- Pentest Box Tools Download
- Hacking Tools
- Hack Apps
- Termux Hacking Tools 2019
- Hack Tools
- Hack Tool Apk No Root
- Hacking Tools
- Hacking Tools 2020
- Hacker Tools Hardware
- Hacker Hardware Tools
- Pentest Tools Url Fuzzer
- Hacker Tools Apk Download
- Pentest Tools
- Pentest Tools Github
- Hack Tool Apk
- Hacking Tools Software
- Hacking Tools Free Download
- Game Hacking
- Tools For Hacker
- Pentest Tools Linux
- How To Hack
- New Hack Tools
- Pentest Tools Free
- Hacking Apps
- Hacker Tools
- Android Hack Tools Github
- World No 1 Hacker Software
- Nsa Hack Tools Download
- Beginner Hacker Tools
- How To Hack
- Hacker Tools Free Download
- Hacks And Tools
- Hacking Tools Usb
- Hack And Tools
- Pentest Tools Download
- Hacker Tools Software
- Pentest Tools Subdomain
- Hack Tool Apk
- New Hacker Tools
- Pentest Tools Download
- Pentest Tools Alternative
- Pentest Tools Online
- Hacker Tool Kit
- Hacking Tools Software
- Nsa Hack Tools Download
- Pentest Tools For Android
- Easy Hack Tools
- Usb Pentest Tools
- Hacker Tools Windows
- Nsa Hack Tools Download
- Hack Tools 2019
- Pentest Tools Free
- Hacking Tools Software
- Github Hacking Tools
- Nsa Hack Tools
- Hacking Tools Windows 10
- Hacker Tools 2020
- Hacking Tools
- Beginner Hacker Tools
- Hacking Tools Usb
- Hacking Tools 2019
- Hack Tools Download
- How To Make Hacking Tools
No comments:
Post a Comment