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 posts
- Hacker Hardware Tools
- Hacking Tools For Windows Free Download
- Top Pentest Tools
- Hacking Tools For Windows
- Beginner Hacker Tools
- Hack Tools For Pc
- Blackhat Hacker Tools
- Hack Website Online Tool
- Hacking Tools For Mac
- Hacker Tools 2019
- Hack Tools Github
- Wifi Hacker Tools For Windows
- Pentest Tools Linux
- Hacking Tools For Windows
- Nsa Hacker Tools
- Hack Tools Mac
- Hack Tools Github
- Hack Tools
- Hacking Tools For Mac
- Hack Tools Online
- New Hacker Tools
- Pentest Automation Tools
- Hacker Tools Software
- Hack Apps
- Hak5 Tools
- Usb Pentest Tools
- Wifi Hacker Tools For Windows
- Growth Hacker Tools
- Pentest Tools Tcp Port Scanner
- Hacker Tools Hardware
- Nsa Hack Tools
- Pentest Tools Bluekeep
- Hacking Tools Software
- Hacking Tools Kit
- Hacking Tools Kit
- Hacker Techniques Tools And Incident Handling
- Hacker Tools 2020
- Hacker Tools Windows
- Bluetooth Hacking Tools Kali
- Hacker Tools Windows
- Ethical Hacker Tools
- Hackrf Tools
- Hacking Tools Hardware
- Hacker Tools Free Download
- Game Hacking
- Hacking Tools For Windows
- Hacking Tools Online
- Hacking Tools For Beginners
- What Is Hacking Tools
- Hacker Tool Kit
- Tools Used For Hacking
- Tools 4 Hack
- Pentest Tools Github
- Hacking Tools Online
- Hacking Tools Software
- Hack Tool Apk No Root
- Hacking Apps
- Pentest Recon Tools
- Pentest Tools Review
- Pentest Tools For Android
- Pentest Tools Bluekeep
- Pentest Tools For Mac
- Hacking Tools For Mac
- Hacker Search Tools
- Hack Tool Apk No Root
- Hacking Tools Windows 10
- Hacking Tools For Mac
- Black Hat Hacker Tools
- Hacker Tools For Mac
- Tools Used For Hacking
- Pentest Tools Github
- Hack Tools Online
- Hacking Tools Online
- Hacker
- World No 1 Hacker Software
- Hacking Tools Github
- Hack Tool Apk

Komentar
Posting Komentar