Я пытаюсь вызвать переполнение буфера, распечатывая адрес в шестнадцатеричном формате на терминал, чтобы служить входом для уязвимой функции.Я дополняю данные, которые нужно записать, 0x01, а затем добавляю к нему адрес вредоносной функции в точке, где она будет перезаписывать указатель возврата.
Проблема, с которой я столкнулся, заключается в том, что \ x00 не добавляется к адресу и по какой-то причине использует другой адрес.Я хочу, чтобы это был адрес:
0x784007ad
Но он возвращается на другой адрес:
0x004007b6
Ниже приведен код, который я написал:
address = "\xad\x07\x40\x00"
print("\x01" * 28 + address)
И я подозреваю, что он искажает последний байт, потому что \ x00 не записывается и использует следующие байты в памяти.
Он не может просто напечатать строку, потому что она будет преобразована в шестнадцатеричное значениеи попробуйте вернуться по этому адресу вместо адреса, который я пытаюсь вернуть как шестнадцатеричный в Python в форме с прямым порядком байтов.