ืคื’ื™ืขื•ืช ื‘-Python ื”ืžืืคืฉืจืช ืœืงืจื•ื ืœืคืงื•ื“ื•ืช ืžืขืจื›ืช ืžืกืงืจื™ืคื˜ื™ื ืžื‘ื•ื“ื“ื™ื

ืคื•ืจืกืžื” ืฉื™ื˜ื” ืœืขืงื•ืฃ ืžืขืจื›ื•ืช ื‘ื™ืฆื•ืข ืงื•ื“ ืžื‘ื•ื“ื“ื•ืช ื‘-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 ื•ืžื“ื’ื™ื ืคืขื•ืœื” ื™ืฆื™ื‘ื” ื‘ืื•ื‘ื•ื ื˜ื• 22.04, ื’ื ื›ืืฉืจ ืžืฆื‘ื™ ื”ื’ื ืช PIE, RELRO ื•-CET ืžื•ืคืขืœื™ื. ื”ืขื‘ื•ื“ื” ืžืกืชื›ืžืช ื‘ื”ืฉื’ืช ืžื™ื“ืข ืžืงื•ื“ Python ืขืœ ื”ื›ืชื•ื‘ืช ืฉืœ ืื—ืช ื”ืคื•ื ืงืฆื™ื•ืช ื‘ืงื•ื“ ื”-CPython ื”ื ื™ืชืŸ ืœื”ืคืขืœื”. ื‘ื”ืชื‘ืกืก ืขืœ ื›ืชื•ื‘ืช ื–ื•, ืžื—ื•ืฉื‘ื™ื ื›ืชื•ื‘ืช ื”ื‘ืกื™ืก ืฉืœ CPython ื‘ื–ื™ื›ืจื•ืŸ ื•ื›ืชื•ื‘ืช ื”ืคื•ื ืงืฆื™ื” system() ื‘ืžื•ืคืข libc ืฉื ื˜ืขืŸ ื‘ื–ื™ื›ืจื•ืŸ. ื‘ืกื•ืฃ, ืžืขื‘ืจ ื™ืฉื™ืจ ืœื›ืชื•ื‘ืช ืžืขืจื›ืช ืกืคืฆื™ืคื™ืช ืžืชื—ื™ืœ ืขื ื”ื—ืœืคืช ื”ืžืฆื‘ื™ืข ืฉืœ ื”ืืจื’ื•ืžื ื˜ ื”ืจืืฉื•ืŸ ืœืฉื•ืจื” "/bin/sh".

ืคื’ื™ืขื•ืช ื‘-Python ื”ืžืืคืฉืจืช ืœืงืจื•ื ืœืคืงื•ื“ื•ืช ืžืขืจื›ืช ืžืกืงืจื™ืคื˜ื™ื ืžื‘ื•ื“ื“ื™ื


ืžืงื•ืจ: OpenNet.ru

ื”ื•ืกืคืช ืชื’ื•ื‘ื”