לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

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



  #1  
ישן 15-12-2007, 01:02
  eXeCuTeR+ eXeCuTeR+ אינו מחובר  
 
חבר מתאריך: 19.10.07
הודעות: 65
Stack smashing protection.

שלום,
אני מנסה לבצע Buffer overflow על תוכנה מסויים, וזה מזהיר שיש העמסה במחסנית.
אמור לעלות seg fault אבל זה לא קורה.

הסיבה היחידה שיש היא הStack smashing protection מופעל, והשאלה שלי היא איך להוריד אותו?

מה שקורה בפועל זה דבר כזה -
כתבתי תוכנית פגיעה:
קוד:
#include <stdio.h> #include <stdlib.h> #include <string.h> int main(int argc, char *argv[]) { char str[20]; if(argc < 2) { printf("Usage: %s string", argv[0]); exit(1); } strcpy(str, argv[1]); printf("You entered: %s", str); return 0; }
עכשיו,
כשאני מריץ את זה אני מקבל:
קוד:
*** stack smashing detected ***: ./bof terminated You entered : (כל הA שכתבתי)Aborted (core dumped)
כשאני מוסיף עוד מספר מסויים של A מופיע הדבר הבא:
קוד:
Segmentation fault (core dumped)


אח"כ כשאני מריץ עם run עם כל הA, בgdb, מה שקורה זה לפעמים זה:
קוד:
Program received signal SIGABRT, Aborted. 0xffffe410 in __kernel_vsyscall ()
ולפעמים זה:
קוד:
Program received signal SIGSEGV, Segmentation fault. 0xb7e49d5f in getenv () from /lib/tls/i686/cmov/libc.so.6
קוד:
(gdb) info reg eip eip 0xb7dd3d5f 0xb7dd3d5f <getenv+159> (gdb) info reg ebp ebp 0xbfda7618 0xbfda7618
אין 0x414141, ההקס של A לא בeip ולא בebp.

שימו לב שהeip משתנה בהתאם לשגיאה, הכוונה לקטע של ה<159+getenv>- לפעמים כתוב getenv ולפעמים kernel ואני לא בטוח אם המספר קבוע.
כנראה זה מספר הA או משהו בסגנון :S

כעיקרון,
מה שאני מנסה זה לעשות overwrite, "כמו כל BOF ממוצע" ( :O), על הeip אבל הstack smashing protection חוסם אותי.
הייתי יכול להחליף את הקרנל של הלינוקס ולהוריד את האבטחה שם, אבל זה סיפור.
יש איזשהי פקודה מסויימת לבטל את זה?


תודה לכולם!

נערך לאחרונה ע"י eXeCuTeR+ בתאריך 15-12-2007 בשעה 01:08.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #2  
ישן 15-12-2007, 11:16
  Dark Knight Dark Knight אינו מחובר  
 
חבר מתאריך: 30.07.05
הודעות: 949
שלח הודעה דרך ICQ אל Dark Knight
בתגובה להודעה מספר 1 שנכתבה על ידי eXeCuTeR+ שמתחילה ב "Stack smashing protection."

אהמ...
אני לא בטוח בתשובה שלי, אז קח אותה בעירבון מוגבל, התשובה שלי מתבססת על הקורס "ארגון ותכנות המחשב" שנלמד על הפלטפורמה של מחשב PDP-11, המחשבים היום הם x86 ככה שאולי זה כבר לא תופס:

עקרונית אי אפשר להוריד את ההגנה הזו - ההגנה הזו היא לא של מערכת ההפעלה, אלא של המעבד עצמו של המחשב.
עקרונית המעבד של המחשב יודע ליצור פסיקות מכונה עבור מספר מקרים:
א) חלוקה ב-0
ב) פקודה לא חוקית (הכוונה היא שניתן opcode שלא קיים באמת)
ג) פסיקת אזהרה כאשר המחסנית מתקרבת לטווח כתובות מסויים.
ד) פסיקת תקלה כאשר המחסנית מגיעה לטווח כתובות מסויים.
ה) עוד דברים שאני לא ממש זוכר


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

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #3  
ישן 15-12-2007, 18:59
  danben danben אינו מחובר  
 
חבר מתאריך: 19.06.03
הודעות: 549
SSP
בתגובה להודעה מספר 1 שנכתבה על ידי eXeCuTeR+ שמתחילה ב "Stack smashing protection."

עד כמה שאני מבין, ה Stack Smashing Protection זה בכלל פיצ'ר של הקומפיילר. אולי משהו שבכלל אפשר לכבות בזמן קומפילציה. אם אתה מקמפל עם GCC אתה יכול לבדוק את זה.

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

ככה אתה תהיה מבודד מעט יותר מ"שטויות" של הלינוקס.

בכל מקרה, אם הבאפר שלך הוא של 20 בתים, הבית ה 21 כבר צריך לדרוס את ה RET ADDR

אם אתה צריך עוד עזרה, רק תשאל. משחקים כאלה הם תמיד נחמדים....


אגב - יכול להיות שהסיבה שאתה לא רואה את מה שאתה מצפה ב EIP זה בגלל שהמנגנון של SSP מוסיף עוד מידע על הסטאק של התחשבת בו לצורך העניין.
אם תבטל אותו, אולי יהיה קל יותר לדרוס....

ועוד דבר אחרון,
הייתי בכלל מוותר על שימוש ב LIBC.
אתה לא יודע איך זה ממומשומן הסתם גם שם יש הגנות....
אם תעתיק עם לולאה את הבאפר שאתה מקבל לדבאפר שאמור לדרוס זה בטוח יעבוד.

תשפר את זה אחרי זה איך שאתה רוצה.

נערך לאחרונה ע"י danben בתאריך 15-12-2007 בשעה 19:05.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

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

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 21:09

הדף נוצר ב 0.06 שניות עם 12 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר