Our Interactive Travel Map and Blog

South America

South America
Choices, choices, choices

Thursday 25 January 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 articles


  1. Hacking Tools Software
  2. Hacker Tools List
  3. Hack Tools Online
  4. Game Hacking
  5. Hack Apps
  6. Hack Tools For Games
  7. How To Hack
  8. Free Pentest Tools For Windows
  9. Hacker Hardware Tools
  10. Hack Rom Tools
  11. Wifi Hacker Tools For Windows
  12. Pentest Tools Review
  13. Pentest Tools Apk
  14. Hacking Tools And Software
  15. Hackrf Tools
  16. Pentest Tools Online
  17. Hacker Search Tools
  18. Hacking Tools Github
  19. Hacker Search Tools
  20. Hacker Tools List
  21. How To Install Pentest Tools In Ubuntu
  22. Termux Hacking Tools 2019
  23. Pentest Automation Tools
  24. Hack Tools For Windows
  25. Blackhat Hacker Tools
  26. Pentest Tools Android
  27. Pentest Tools Subdomain
  28. Hackrf Tools
  29. Game Hacking
  30. Hack App
  31. Hacking Tools And Software
  32. Hacker Tools Online
  33. Physical Pentest Tools
  34. Hacking Tools Pc
  35. Pentest Tools Review
  36. Hacking Tools Github
  37. Hack Tools For Mac
  38. Hacker Tools Github
  39. Game Hacking
  40. Pentest Box Tools Download
  41. Nsa Hacker Tools
  42. Free Pentest Tools For Windows
  43. Pentest Tools Find Subdomains
  44. Hack Tool Apk
  45. Termux Hacking Tools 2019
  46. Hacker Tools Free Download
  47. Pentest Tools Alternative
  48. Hacking App
  49. Hacker Tools Free
  50. Hacker Tools For Mac
  51. Hacker Tools For Pc
  52. Hack Tools Github
  53. Hacker Tools Linux
  54. Hacker Tools Github
  55. Nsa Hack Tools Download
  56. Hak5 Tools
  57. Hacking Tools Kit
  58. New Hacker Tools
  59. Hack Tools Mac
  60. Hacking Tools For Windows
  61. Pentest Tools Bluekeep
  62. Pentest Tools Website
  63. Hacker Techniques Tools And Incident Handling
  64. Hacking Tools Usb
  65. Hacking Tools Name
  66. Hacker Tools Hardware
  67. Hack Rom Tools
  68. Game Hacking
  69. Pentest Tools Find Subdomains
  70. Pentest Tools Subdomain
  71. Hack Tools 2019
  72. Hack Tools For Ubuntu
  73. Hacking Tools Windows 10
  74. Hack Tool Apk
  75. Hacker Tools For Pc
  76. Termux Hacking Tools 2019
  77. Tools 4 Hack
  78. Pentest Tools For Mac
  79. Hack Tools Mac
  80. Easy Hack Tools
  81. What Is Hacking Tools
  82. Pentest Recon Tools
  83. Tools For Hacker
  84. Pentest Tools Bluekeep
  85. Pentest Tools Url Fuzzer
  86. Hacking Tools Software
  87. Pentest Tools For Windows
  88. Pentest Tools Bluekeep
  89. How To Hack
  90. Pentest Tools Online
  91. Hacker Tools Apk Download
  92. Hacker Tools Linux
  93. Pentest Tools Linux
  94. How To Make Hacking Tools
  95. Hacking Tools For Windows Free Download
  96. Pentest Tools Android
  97. Pentest Tools Nmap
  98. Hack Tools Pc
  99. Hack Tools
  100. Beginner Hacker Tools
  101. Pentest Tools Apk
  102. World No 1 Hacker Software
  103. How To Hack
  104. Hack Tools For Ubuntu
  105. Hack Tools For Pc
  106. What Is Hacking Tools
  107. Hacker Search Tools
  108. Pentest Tools Website
  109. Hacking Tools Usb
  110. Pentest Tools Subdomain
  111. Hacker Tools For Mac
  112. Pentest Tools Port Scanner
  113. Tools For Hacker
  114. Pentest Tools Find Subdomains
  115. Hacking Tools For Windows 7
  116. Bluetooth Hacking Tools Kali
  117. Pentest Reporting Tools
  118. Pentest Tools Website Vulnerability
  119. How To Hack
  120. Pentest Tools Online
  121. Hack Tools For Mac
  122. Pentest Automation Tools

No comments: