הדלפת libc בפורמט סטרינג
אני מצליח להדליף כתובת libc, אבל ה-offset מישתנה בכל הרצה. עדיף לי לחפש כתובת חזרה קבועה או לחשב base מההדלפה?
אני מצליח להדליף כתובת libc, אבל ה-offset מישתנה בכל הרצה. עדיף לי לחפש כתובת חזרה קבועה או לחשב base מההדלפה?
מכיר את הכאב הזה, אם ה-offset משתנה כנראה שאתה מדליף משהו שלא תמיד יושב באותו מקום. עדיף למצוא דליפה של symbol קבוע ב-libc ואז לחשב ממנה את ה-base לפי הגרסה הרלוונטית, במקום לבנות על כתובת חזרה.
חד משמעית לחשב את ה-base מההדלפה, כתובת חזרה קבועה זה סתם להמר מול ASLR. תזהה איזה סמל דלף ותוריד את ה-offset שלו ב-libc המתאימה, גם אם הכתובת מישתנה כל הרצה.
עדיף לחשב את ה-base מההדלפה: תזהה לאיזה symbol או return address בתוך libc היא שייכת ואז libc_base = leak - offset לפי גרסת ה-libc. אם ה-offset עצמו משתנה כנראה שאתה קורא ארגומנט לא יציב ב-format string, אז תחפש אינדקס %n$p עקבי
חד משמעית לחשב base מההדלפה, לחפש כתובת חזרה קבועה עם ASLR זה סתם להילחם במנגנון במקום לנצל את מה שכבר יש לך.