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
- How To Install Pentest Tools In Ubuntu
- Hacking Tools
- Pentest Automation Tools
- Hacker Tools List
- Hacking Tools 2019
- Hacking Tools For Windows
- Pentest Tools For Ubuntu
- Hacker Tools Linux
- Hacking Tools For Windows 7
- Hacking Tools Software
- Hacker Tools For Ios
- Hacking Tools 2020
- Underground Hacker Sites
- Github Hacking Tools
- Hack Tools 2019
- Hacking Tools For Windows 7
- Pentest Tools Linux
- Pentest Tools Find Subdomains
- Hacking Apps
- Hacking App
- Hacking Tools Free Download
- Pentest Tools Find Subdomains
- World No 1 Hacker Software
- Kik Hack Tools
- Hack Tools
- Usb Pentest Tools
- Hacking Tools And Software
- Tools 4 Hack
- How To Install Pentest Tools In Ubuntu
- Hacker Tools Free
- Best Pentesting Tools 2018
- Github Hacking Tools
- Hack Tools
- Hacking Tools For Games
- Hacker Tools
- Best Hacking Tools 2020
- Nsa Hack Tools
- Pentest Recon Tools
- Hack Rom Tools
- Hacking Tools Windows 10
- Hacking Tools
- Hacking Tools For Kali Linux
- Hacking Apps
- What Are Hacking Tools
- Pentest Tools List
- Nsa Hack Tools
- Pentest Tools List
- Hacking Tools
- Tools For Hacker
- Pentest Tools Find Subdomains
- Pentest Tools For Mac
- Game Hacking
- Hacking Tools For Mac
- Pentest Tools Android
- Pentest Tools For Windows
- Pentest Tools Tcp Port Scanner
- Game Hacking
- Free Pentest Tools For Windows
- Hacking Tools For Mac
- Best Hacking Tools 2019
- Best Pentesting Tools 2018
- Underground Hacker Sites
- Termux Hacking Tools 2019
- Physical Pentest Tools
- Hacker Hardware Tools
- Hacking Tools For Mac
- Easy Hack Tools
- Hack Tools Github
- Hacker Tools Windows
- Nsa Hack Tools
- Hacking Tools For Games
- Hacker Tools For Ios
- Hacker Tools Github
- Hacker Security Tools
- Hacking Tools 2019
- Pentest Tools List
- Easy Hack Tools
- Hacking Tools Download
- Hacker Search Tools
- Hack Tool Apk
- Pentest Tools Tcp Port Scanner
- Hacking App
- Hack Rom Tools
- Hacker Tools Online
- Physical Pentest Tools
- Hacker Tools Free Download
- Hacking Tools For Mac
- Hack Tools Online
- Pentest Tools For Android
- Hack Tool Apk
- Hacking Tools Software
- Hacking Tools For Mac
- Hacker Tools For Windows
- Hack Tool Apk
- Hack Tools
- Hacker Tools Free Download
- Pentest Tools Nmap
- Physical Pentest Tools
- Blackhat Hacker Tools
- Pentest Tools For Android
- Hacker Tools
- Ethical Hacker Tools
- Hack Apps
No comments:
Post a Comment