Tuesday, 25 August 2020

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.

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':''}

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


  1. Nsa Hack Tools Download
  2. Hack Tools 2019
  3. Hack Tools Online
  4. Hacking Tools For Kali Linux
  5. Hack Tools For Windows
  6. Hacker
  7. Pentest Tools Alternative
  8. Hacker
  9. Hack Rom Tools
  10. Hacker Tools For Pc
  11. Hack Tools
  12. Free Pentest Tools For Windows
  13. Hacker Tools Software
  14. Tools 4 Hack
  15. Hacker Tools Free
  16. Tools For Hacker
  17. How To Install Pentest Tools In Ubuntu
  18. Hacker Tool Kit
  19. Computer Hacker
  20. Pentest Recon Tools
  21. Wifi Hacker Tools For Windows
  22. Tools For Hacker
  23. Usb Pentest Tools
  24. Hacker Tools Linux
  25. Hacker Tools Linux
  26. Hack Tool Apk
  27. Hacker Tools 2019
  28. New Hacker Tools
  29. Nsa Hacker Tools
  30. Pentest Tools Online
  31. Hacker Tools Free
  32. Nsa Hack Tools Download
  33. Hackrf Tools
  34. Hack Tools 2019
  35. New Hacker Tools
  36. Hack Tools
  37. Hacks And Tools
  38. Pentest Tools Tcp Port Scanner
  39. Hacking Tools For Pc
  40. Pentest Tools Linux
  41. Kik Hack Tools
  42. Hacking Tools Usb
  43. Pentest Automation Tools
  44. World No 1 Hacker Software
  45. Hack Tools For Pc
  46. Hacker Tools Apk
  47. Hacker Tools Software
  48. Hackers Toolbox
  49. Hacker Tools Free
  50. Pentest Box Tools Download
  51. Growth Hacker Tools
  52. Pentest Box Tools Download
  53. Hack Tools 2019
  54. Pentest Tools Subdomain
  55. Pentest Tools
  56. Hak5 Tools
  57. Tools For Hacker
  58. Hack Tools For Games
  59. Hacker Tools List
  60. Hack Apps
  61. Pentest Tools Download
  62. Pentest Tools Website Vulnerability

0 Comments:

Post a Comment

Subscribe to Post Comments [Atom]

<< Home