ΠΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½ Π΅ ΠΌΠ΅ΡΠΎΠ΄ Π·Π° Π·Π°ΠΎΠ±ΠΈΠΊΠ°Π»ΡΠ½Π΅ Π½Π° ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ΄ Π² Python, Π±Π°Π·ΠΈΡΠ°Π½ Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΎΡΠ΄Π°Π²Π½Π° ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ Π±ΡΠ³, ΠΏΠΎΡΠ²ΠΈΠ» ΡΠ΅ Π² Python 2.7, ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠ°Π½ ΠΏΡΠ΅Π· 2012 Π³. ΠΈ Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ Π΅ ΠΊΠΎΡΠΈΠ³ΠΈΡΠ°Π½ Π² Python 3. ΠΡΠ΅ΡΠΊΠ°ΡΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ ΡΠ²ΡΡΠ·Π°Π½ΠΈ Python ΠΊΠΎΠ΄ Π·Π° ΠΈΠ½ΠΈΡΠΈΠΈΡΠ°Π½Π΅ Π½Π° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Π²Π΅ΡΠ΅ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄Π΅Π½Π° ΠΏΠ°ΠΌΠ΅Ρ (Use-After-Free) Π² Python. ΠΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½ΠΎ ΡΠ΅ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡΠ΅, ΡΠ΅ Π³ΡΠ΅ΡΠΊΠ°ΡΠ° Π½Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π° Π·Π°ΠΏΠ»Π°Ρ Π° Π·Π° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡΡΠ° ΠΈ ΡΠ°ΠΌΠΎ Π² ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΅Π΄ΠΊΠΈ ΡΠ»ΡΡΠ°ΠΈ, ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΠΈΠ·ΠΊΡΡΡΠ²Π΅Π½ΠΎ ΡΡΠ·Π΄Π°Π΄Π΅Π½ΠΈ, ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ Π½Π΅ΠΎΠ±ΠΈΡΠ°ΠΉΠ½ΠΎ ΠΏΡΠ΅ΠΊΡΠ°ΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠΊΡΠΈΠΏΡΠ°.
ΠΠ·ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π» ΠΏΠΎ ΡΠΈΠ³ΡΡΠ½ΠΎΡΡΡΠ° ΠΏΠΎΠ΄ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌ kn32 ΡΠ΅ Π·Π°ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ²Π° ΠΎΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΈ ΡΡΠΏΡ Π΄Π° ΠΏΠΎΠ΄Π³ΠΎΡΠ²ΠΈ ΡΠ°Π±ΠΎΡΠ΅Ρ Π΅ΠΊΡΠΏΠ»ΠΎΠΉΡ, ΠΊΠΎΠΉΡΠΎ ΠΏΡΠ°Π²ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π²ΡΡΠΊΠ° ΡΠΈΡΡΠ΅ΠΌΠ½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°, Π±Π΅Π· Π΄Π° ΠΈΠΌΠ°ΡΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠ΅Π½ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΠΌΠ΅ΡΠΎΠ΄ΠΈ ΠΊΠ°ΡΠΎ os.system. ΠΠΊΡΠΏΠ»ΠΎΠΉΡΡΡ Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ Π² ΡΠΈΡΡ Python ΠΈ ΡΠ°Π±ΠΎΡΠΈ Π±Π΅Π· ΠΈΠΌΠΏΠΎΡΡΠΈΡΠ°Π½Π΅ Π½Π° Π²ΡΠ½ΡΠ½ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈ Π±Π΅Π· ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ Π½Π° ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΎΡΠ° βcode.__new__β. ΠΡ ΠΊΡΠΊΠΈΡΠ΅ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ°ΠΌΠΎ βbuiltin.__id__β, ΠΊΠΎΠ΅ΡΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π½Π΅ Π΅ Π·Π°Π±ΡΠ°Π½Π΅Π½ΠΎ. ΠΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠ° Π³Π»Π΅Π΄Π½Π° ΡΠΎΡΠΊΠ°, ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡΡ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° Π·Π°ΠΎΠ±ΠΈΠΊΠ°Π»ΡΠ½Π΅ Π½Π° ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΈ Π·Π° ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΡΠ»ΡΠ³ΠΈ ΠΈ ΡΡΠ΅Π΄ΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π² ΡΡΠ΅Π΄ΠΈ Π·Π° ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅, ΠΎΠ½Π»Π°ΠΉΠ½ ΡΠ΅ΡΡΠΏΠΊΠΈ, Π²Π³ΡΠ°Π΄Π΅Π½ΠΈ ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΎΡΠΈ ΠΈ Ρ.Π½.), ΠΊΠΎΠΈΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠ΄ Π½Π° Python, Π½ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ°Π²Π°Ρ Π½Π°Π»ΠΈΡΠ½ΠΈ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½ΠΈΡ ΠΈ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π·Π° ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½Π΅ ΠΊΠ°ΡΠΎ os.system.
ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡΡ ΠΊΠΎΠ΄ Π΅ Π°Π½Π°Π»ΠΎΠ³ Π½Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ΡΠΎ Π½Π° os.system, ΠΊΠΎΠ΅ΡΠΎ ΡΠ°Π±ΠΎΡΠΈ ΡΡΠ΅Π· ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡ Π² CPython. ΠΠΊΡΠΏΠ»ΠΎΠΉΡΡΡ ΡΠ°Π±ΠΎΡΠΈ Ρ Π²ΡΠΈΡΠΊΠΈ Π²Π΅ΡΡΠΈΠΈ Π½Π° Python 3 Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΈ Ρ x86-64 Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΠΈ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠ° ΡΡΠ°Π±ΠΈΠ»Π½Π° ΡΠ°Π±ΠΎΡΠ° Π½Π° Ubuntu 22.04, Π΄ΠΎΡΠΈ ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅ΠΆΠΈΠΌΠΈΡΠ΅ Π½Π° Π·Π°ΡΠΈΡΠ° PIE, RELRO ΠΈ CET ΡΠ° Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½ΠΈ. Π Π°Π±ΠΎΡΠ°ΡΠ° ΡΠ΅ ΡΠ²Π΅ΠΆΠ΄Π° Π΄ΠΎ ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΡ ΠΊΠΎΠ΄Π° Π½Π° Python Π·Π° Π°Π΄ΡΠ΅ΡΠ° Π½Π° Π΅Π΄Π½Π° ΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅ Π² ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌΠΈΡ ΠΊΠΎΠ΄ Π½Π° CPython. ΠΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΡΠΎΠ·ΠΈ Π°Π΄ΡΠ΅Ρ ΡΠ΅ ΠΈΠ·ΡΠΈΡΠ»ΡΠ²Π°Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΡ Π°Π΄ΡΠ΅Ρ Π½Π° CPython Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ° ΠΈ Π°Π΄ΡΠ΅ΡΡΡ Π½Π° ΡΡΠ½ΠΊΡΠΈΡΡΠ° system() Π² Π΅ΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° Π½Π° libc, Π·Π°ΡΠ΅Π΄Π΅Π½ Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ°. ΠΠ°ΠΊΡΠ°Ρ ΡΠ΅ ΠΈΠ½ΠΈΡΠΈΠΈΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠ΅Π½ ΠΏΡΠ΅Ρ ΠΎΠ΄ ΠΊΡΠΌ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ΅Π½ ΡΠΈΡΡΠ΅ΠΌΠ΅Π½ Π°Π΄ΡΠ΅Ρ ΡΡΡ Π·Π°ΠΌΡΠ½Π° Π½Π° ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΠΏΡΡΠ²ΠΈΡ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Π² ΡΠ΅Π΄Π° β/bin/shβ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru