Buffer Overflow and scanf
כידוע ב scanf יש בעיה של Buffer Overflow - אם מבקשים ממנה לקלוט ערך לתוך כתובת של משתנה מסוג מערך של char, אז אם המשתמש יכניס יותר תווים מהגודל של המערך, אז הם יכנסו לכתובות שנמצאות מעבר למערך (ב VS6 זה יוצא לתוך המשתנים שהוצהרו לפני המערך). האם הסכנה קיימת גם כאן קולטים משתנה יחיד באמצעות x% או d%? אם כן, כיצד אפשר לנצל אותה? ליתר דיוק יש לי תוכנית כזאת:
כידוע ב scanf יש בעיה של Buffer Overflow - אם מבקשים ממנה לקלוט ערך לתוך כתובת של משתנה מסוג מערך של char, אז אם המשתמש יכניס יותר תווים מהגודל של המערך, אז הם יכנסו לכתובות שנמצאות מעבר למערך (ב VS6 זה יוצא לתוך המשתנים שהוצהרו לפני המערך). האם הסכנה קיימת גם כאן קולטים משתנה יחיד באמצעות x% או d%? אם כן, כיצד אפשר לנצל אותה? ליתר דיוק יש לי תוכנית כזאת:
int a; int x = ... scanf("%x",&a); ... printf("%x",a);
ואני רוצה להכניס קלט ל scanf כך שיודפס הערך של x. האם יש דרך לעשות זאת? תודה מראש.