segunda-feira, 5 de junho de 2023

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()





Continue reading
  1. Hack Tools Github
  2. Pentest Tools Website
  3. Hacking Tools For Mac
  4. Hack Apps
  5. Hack Tools Online
  6. Pentest Tools Open Source
  7. Pentest Tools Find Subdomains
  8. Hacker Tools 2020
  9. Pentest Tools Linux
  10. Ethical Hacker Tools
  11. Free Pentest Tools For Windows
  12. Black Hat Hacker Tools
  13. Hacking Apps
  14. Hacking Tools For Windows Free Download
  15. World No 1 Hacker Software
  16. Hacker Techniques Tools And Incident Handling
  17. Nsa Hack Tools Download
  18. Hack Tools Online
  19. Pentest Tools Find Subdomains
  20. Hacking Tools Windows 10
  21. Hack Tools Mac
  22. Pentest Tools Online
  23. Hacking Tools And Software
  24. Hacking Tools Mac
  25. Hack Website Online Tool
  26. Nsa Hack Tools
  27. Hack Tools For Windows
  28. World No 1 Hacker Software
  29. Hacking Tools For Games
  30. Hacking Tools Hardware
  31. Hacking Tools For Windows Free Download
  32. Install Pentest Tools Ubuntu
  33. Hacker Tools Free
  34. Hacker Search Tools
  35. Hacking Apps
  36. Hacking Tools And Software
  37. World No 1 Hacker Software
  38. Hack Tools For Games
  39. Pentest Tools Online
  40. Kik Hack Tools
  41. Hack Tools Pc
  42. New Hacker Tools
  43. Hacker
  44. Tools For Hacker
  45. Hacker Tools Github
  46. Hacker Search Tools
  47. Hacker Tools Github
  48. Pentest Tools Android
  49. Pentest Tools Android
  50. Pentest Tools Tcp Port Scanner
  51. Hacks And Tools
  52. Hack Tools Pc
  53. Tools Used For Hacking
  54. Pentest Tools Open Source
  55. Kik Hack Tools
  56. Hacker Tools Online
  57. Bluetooth Hacking Tools Kali
  58. Hacker Hardware Tools
  59. Pentest Tools List
  60. Hack Tools
  61. Hacker Tools 2019
  62. Hacking Tools For Pc
  63. How To Make Hacking Tools
  64. Pentest Tools Tcp Port Scanner
  65. How To Make Hacking Tools
  66. Hacker Tools Software
  67. How To Make Hacking Tools
  68. Hacking Tools For Pc
  69. Hacker Tools
  70. Hack Website Online Tool
  71. How To Install Pentest Tools In Ubuntu
  72. Pentest Tools Online
  73. Pentest Tools Free
  74. Pentest Tools Website Vulnerability
  75. Hacker Tools Apk Download
  76. Hacker Techniques Tools And Incident Handling
  77. Hack Rom Tools
  78. Hacking Tools Pc
  79. Hack And Tools
  80. Best Hacking Tools 2019
  81. Hacking Tools Windows 10
  82. Pentest Tools List
  83. Underground Hacker Sites
  84. Hacking App
  85. Hacker Hardware Tools
  86. Blackhat Hacker Tools
  87. Pentest Tools For Ubuntu
  88. Hacker Tools Software
  89. Install Pentest Tools Ubuntu
  90. Hacking App
  91. Hacking Tools

Nenhum comentário: