Defcon 2015 Coding Skillz 1 Writeup
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 word
- Nsa Hack Tools Download
- Hack Tools 2019
- Hack Tools Online
- Hacking Tools For Kali Linux
- Hack Tools For Windows
- Hacker
- Pentest Tools Alternative
- Hacker
- Hack Rom Tools
- Hacker Tools For Pc
- Hack Tools
- Free Pentest Tools For Windows
- Hacker Tools Software
- Tools 4 Hack
- Hacker Tools Free
- Tools For Hacker
- How To Install Pentest Tools In Ubuntu
- Hacker Tool Kit
- Computer Hacker
- Pentest Recon Tools
- Wifi Hacker Tools For Windows
- Tools For Hacker
- Usb Pentest Tools
- Hacker Tools Linux
- Hacker Tools Linux
- Hack Tool Apk
- Hacker Tools 2019
- New Hacker Tools
- Nsa Hacker Tools
- Pentest Tools Online
- Hacker Tools Free
- Nsa Hack Tools Download
- Hackrf Tools
- Hack Tools 2019
- New Hacker Tools
- Hack Tools
- Hacks And Tools
- Pentest Tools Tcp Port Scanner
- Hacking Tools For Pc
- Pentest Tools Linux
- Kik Hack Tools
- Hacking Tools Usb
- Pentest Automation Tools
- World No 1 Hacker Software
- Hack Tools For Pc
- Hacker Tools Apk
- Hacker Tools Software
- Hackers Toolbox
- Hacker Tools Free
- Pentest Box Tools Download
- Growth Hacker Tools
- Pentest Box Tools Download
- Hack Tools 2019
- Pentest Tools Subdomain
- Pentest Tools
- Hak5 Tools
- Tools For Hacker
- Hack Tools For Games
- Hacker Tools List
- Hack Apps
- Pentest Tools Download
- Pentest Tools Website Vulnerability
0 Comments:
Post a Comment
Subscribe to Post Comments [Atom]
<< Home