Monday, January 22, 2024

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. Hacking Apps
  2. Hacking Tools Hardware
  3. Pentest Automation Tools
  4. Pentest Tools
  5. Hacking Tools For Pc
  6. Pentest Tools For Mac
  7. Hacker Tools For Mac
  8. Hacks And Tools
  9. Kik Hack Tools
  10. Hacker Tools Software
  11. Blackhat Hacker Tools
  12. Hacker Tools For Ios
  13. Hacking Tools Mac
  14. Hacking Tools 2019
  15. Pentest Tools Download
  16. Hacking Tools Software
  17. Pentest Tools Free
  18. Pentest Tools Download
  19. World No 1 Hacker Software
  20. Hacking Tools 2019
  21. Hacker Tools Linux
  22. Pentest Tools Website Vulnerability
  23. Hack Tools For Ubuntu
  24. Hacking Tools Usb
  25. Hacking Tools Online
  26. Hacking Tools 2020
  27. Hack Tools
  28. Hacking Tools Software
  29. Black Hat Hacker Tools
  30. Hacker Tools Free
  31. Hack Tools
  32. Hacking Tools Hardware
  33. Pentest Tools
  34. What Are Hacking Tools
  35. Best Pentesting Tools 2018
  36. Pentest Tools Review
  37. Hacker Tools Software
  38. Hack Tools For Mac
  39. Pentest Tools For Ubuntu
  40. Best Pentesting Tools 2018
  41. Hacker Tools Github
  42. Pentest Recon Tools
  43. Hacker Tools Online
  44. Pentest Box Tools Download
  45. Usb Pentest Tools
  46. Hack Tools For Windows
  47. Underground Hacker Sites
  48. Hack Tools Download
  49. Ethical Hacker Tools
  50. Hacking Tools For Windows Free Download
  51. Hacker Tools Hardware
  52. Hacker Tools For Pc
  53. Hacking Tools For Beginners
  54. Pentest Tools Find Subdomains
  55. Hack Tools
  56. Hacking Tools For Games
  57. Hacker Tools Github
  58. Hacking Tools Kit
  59. Hack Tools Github
  60. Hacking Tools Name
  61. Pentest Automation Tools
  62. Hacker Tools
  63. Hacker Hardware Tools
  64. Tools For Hacker
  65. Pentest Tools Github
  66. Hacking Tools For Windows 7
  67. Pentest Tools Free
  68. Hacking Tools And Software
  69. Hacker Tools For Ios
  70. Hacking Tools For Windows Free Download
  71. Hacker Security Tools
  72. Hack Rom Tools
  73. Termux Hacking Tools 2019
  74. Pentest Automation Tools
  75. Pentest Tools For Android
  76. Hack App
  77. Hacking Tools Windows 10
  78. What Are Hacking Tools
  79. Pentest Tools Github
  80. Pentest Tools Port Scanner
  81. Pentest Tools Subdomain
  82. Pentest Tools
  83. Pentest Tools Open Source
  84. Hacking Tools Windows
  85. Easy Hack Tools
  86. Hacking Tools For Mac
  87. Pentest Automation Tools
  88. Hacking Tools Software
  89. Hacker Search Tools
  90. Pentest Tools Alternative
  91. Hacker
  92. Pentest Tools For Mac
  93. Hacking Tools For Mac
  94. Hacking Tools Free Download
  95. Hack Apps

No comments:

Post a Comment