ΠŸΠΎΡΡ‚ΠΈΠ³Π°Π½Π΅ Π½Π° изпълнСниС Π½Π° ΠΊΠΎΠ΄ Ρ‡Ρ€Π΅Π· ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ» Π½Π° тСкста Π½Π° ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€Π° Π² Python скрипт

Π•Π΄ΠΈΠ½ ΠΎΡ‚ участницитС Π½Π° ΡΡŠΡΡ‚Π΅Π·Π°Π½ΠΈΠ΅Ρ‚ΠΎ UIUCTF 2025 ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ обясни ΠΊΠ°ΠΊ Π΅ успял Π΄Π° изпълни Π·Π°Π΄Π°Ρ‡Π°, изискваща ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° нСговия ΠΊΠΎΠ΄ Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π°, ΠΈΠΌΠ°ΠΉΠΊΠΈ само Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° промяна Π½Π° ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° тСкста Π² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΡ‚Π΅ Π½Π° ΠΊΠΎΠ΄Π°.

УчастницитС ΠΌΠΎΠΆΠ΅Ρ…Π° Π΄Π° изпратят ΠΌΡ€Π΅ΠΆΠΎΠ²Π° заявка към Python скрипт, ΠΊΠΎΠΉΡ‚ΠΎ създавашС Π½ΠΎΠ² Python скрипт с ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΎ ΠΈΠΌΠ΅, добавяшС прСдоставСнитС ΠΎΡ‚ потрСбитСля Π΄Π°Π½Π½ΠΈ Π² тСкстовия ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€, ΠΏΡ€Π΅ΠΌΠ°Ρ…Π²Π°ΠΉΠΊΠΈ символитС "\n" ΠΈ "\r", ΠΈ ΡΡ‚Π°Ρ€Ρ‚ΠΈΡ€Π°ΡˆΠ΅ Ρ‚ΠΎΠ·ΠΈ скрипт с ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° "python3 ΠΈΠΌΠ΅.py". ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π°ΠΉΠΊΠΈ само ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€Π°, ΡƒΡ‡Π°ΡΡ‚Π½ΠΈΠΊΡŠΡ‚ Ρ‚Ρ€ΡΠ±Π²Π°ΡˆΠ΅ Π΄Π° ΠΈΠ·Π²Π»Π΅Ρ‡Π΅ Π½ΠΈΠ· ΠΎΡ‚ Ρ„Π°ΠΉΠ»Π° "\/home\/ctfuser\/flag". Π‘ΠΊΡ€ΠΈΠΏΡ‚ΡŠΡ‚ сС създавашС с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° слСдния ΠΊΠΎΠ΄: comment = input("> ").replace("\n", "").replace("\r", "") code = f"""print("hello world!") # Π’ΠΎΠ²Π° Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€. Π•Ρ‚ΠΎ ΠΎΡ‰Π΅ Π΅Π΄ΠΈΠ½: # {comment} print("Thanks for playing!")"""

ВмСсто "{comment}" сС замСстваха Π΄Π°Π½Π½ΠΈΡ‚Π΅, прСдоставСни ΠΎΡ‚ участника, ΠΈ Π² ΠΊΡ€Π°ΠΉΠ½Π° смСтка сС изпълнявашС слСдният ΠΊΠΎΠ΄: print("hello world!") # Π’ΠΎΠ²Π° Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€. Π•Ρ‚ΠΎ ΠΎΡ‰Π΅ Π΅Π΄ΠΈΠ½: # Π”Π°Π½Π½ΠΈΡ‚Π΅, прСдоставСни ΠΎΡ‚ участника Π² ΡΡŠΡΡ‚Π΅Π·Π°Π½ΠΈΠ΅Ρ‚ΠΎ print("Thanks for playing!")

Π—Π°Π΄Π°Π½ΠΈΠ΅Ρ‚ΠΎ бСшС Ρ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€Π°Π½ΠΎ Π²Π΄ΡŠΡ…Π½ΠΎΠ²Π΅Π½ΠΎ ΠΎΡ‚ уязвимост Π² парсСра CPython, ΠΊΠΎΠΉΡ‚ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°ΡˆΠ΅ символа с Π½ΡƒΠ»Π΅Π² ΠΊΠΎΠ΄ ΠΊΠ°Ρ‚ΠΎ ΠΊΡ€Π°ΠΉ Π½Π° Ρ€Π΅Π΄Π° (уязвимост, която моТСшС Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° скриванС Π½Π° Π·Π»ΠΎΠ²Ρ€Π΅Π΄Π½ΠΈ дСйствия Π² тСкста Π½Π° ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€Π°). ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ бСшС отстранСн Π² разпространСнията Π½Π° CPython 3.12.0 ΠΈ 3.11.4. Π’ прилагания Π² конкурса ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°Ρ‡ сС ΠΏΡ€Π΅ΠΌΠ°Ρ…Π²Π°Ρ…Π° само символитС "\n" ΠΈ "\r", Π½ΠΎ ΠΏΡ€ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° уязвимата вСрсия Π½Π° CPython ΡƒΡ‡Π°ΡΡ‚Π½ΠΈΠΊΡŠΡ‚ моТСшС Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° символа "\0" ΠΊΠ°Ρ‚ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π». Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π°, Ρ‚ΠΎΠ·ΠΈ Ρ‚Ρ€ΠΈΠΊ Π½Π΅ сработи, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Π² конкурса сС използвашС Π²Π΅Ρ‡Π΅ фиксирана вСрсия Π½Π° CPython, ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄, Ρ‡Π΅ Π² парсСра ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° останат ΠΎΡ‰Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ Π³Ρ€Π΅ΡˆΠΊΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ участницитС Π΄Π° открият.

УспСшно справилият сС с Π·Π°Π΄Π°Ρ‡Π°Ρ‚Π° участник Π½Π΅ Ρ‚ΡŠΡ€ΡΠ΅ΡˆΠ΅ Π½ΠΎΠ²ΠΈ уязвимости Π² парсСра, ΠΊΠΎΠΈΡ‚ΠΎ Π΄Π° позволят раздСлянСто Π½Π° Π½ΠΈΠ· Π½Π° части, Π° сС възползва ΠΎΡ‚ особСноститС ΠΏΡ€ΠΈ ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π² Python Π² зависимост ΠΎΡ‚ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅Ρ‚ΠΎ ΠΈΠΌ. НапримСр, вмСсто изходния ΠΊΠΎΠ΄, Π² Ρ„Π°ΠΉΠ» с Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ ".py" ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС поставСн ΠΊΠ΅ΡˆΠΈΡ€Π°Π½ Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄, Π·Π°ΠΏΠ°Π·Π²Π°Π½ Π² Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ с Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ ".pyc", ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Ρ„Π°ΠΉΠ» Ρ‰Π΅ бъдС изпълнСн. Π’ Ρ€Π°Π·Π³Π»Π΅ΠΆΠ΄Π°Π½ΠΎΡ‚ΠΎ ΡΡŠΡΡ‚Π΅Π·Π°Π½ΠΈΠ΅ ΡƒΡ‡Π°ΡΡ‚Π½ΠΈΠΊΡŠΡ‚ моТСшС Π΄Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π° само ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅Ρ‚ΠΎ Π² срСдата Π½Π° Ρ„Π°ΠΉΠ»Π°, ΠΏΠΎΡ€Π°Π΄ΠΈ ΠΊΠΎΠ΅Ρ‚ΠΎ Π½Π΅ моТСшС Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈ свой Π·Π°Π³Π»Π°Π²Π΅Π½ Ρ€Π΅Π΄ Π·Π° изкривяванС Π½Π° MIME Ρ‚ΠΈΠΏΠ°.

Π—Π°Π΄Π°Ρ‡Π°Ρ‚Π° бСшС Ρ€Π΅ΡˆΠ΅Π½Π°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ Ρ„Π°ΠΊΡ‚Π°, Ρ‡Π΅ Python ΠΎΡ‚ вСрсия 2.6 насам ΠΌΠΎΠΆΠ΅ Π΄Π° изпълнява ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ZIP Π°Ρ€Ρ…ΠΈΠ²ΠΈ Π·Π° доставка Π½Π° Python ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ Π² компрСсиран Π²ΠΈΠ΄. ΠšΠ°ΠΊΡ‚ΠΎ ΠΏΡ€ΠΈ ΠΊΠ΅ΡˆΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄, Π½Π°Π»ΠΈΡ‡ΠΈΠ΅Ρ‚ΠΎ Π½Π° zip Π°Ρ€Ρ…ΠΈΠ² сС опрСдСля ΠΏΠΎ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅Ρ‚ΠΎ, Π° Π½Π΅ ΠΏΠΎ Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Ρ„Π°ΠΉΠ»Π°, Ρ‚.Π΅. Π² "Ρ„Π°ΠΉΠ».py" ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС поставСн zip Π°Ρ€Ρ…ΠΈΠ² ΠΈ ΠΏΡ€ΠΈ стартиранС с ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° "python Ρ„Π°ΠΉΠ».py" Ρ‚ΠΎΠΉ Ρ‰Π΅ бъдС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π΅Π½ ΠΊΠ°Ρ‚ΠΎ компрСсиран Python ΠΏΠ°ΠΊΠ΅Ρ‚. Π’ ΡΡŠΡ‰ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅ ZIP Π°Ρ€Ρ…ΠΈΠ²ΠΈΡ‚Π΅ Π² Python Π½Π΅ сС индСксират ΠΏΠΎ Π·Π°Π³Π»Π°Π²ΠΈΠ΅Ρ‚ΠΎ Π² Π½Π°Ρ‡Π°Π»ΠΎΡ‚ΠΎ Π½Π° Ρ„Π°ΠΉΠ»Π°, Π° ΠΏΠΎ сСкцията EOCD (End of Central Directory Record) Π² края Π½Π° Ρ„Π°ΠΉΠ»Π°. ΠŸΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π½Π° Ρ„Π°ΠΉΠ» "__main__.py" Π² Π°Ρ€Ρ…ΠΈΠ²Π°, Ρ‚ΠΎΠ·ΠΈ Ρ„Π°ΠΉΠ» сС стартира Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ ΠΏΡ€ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ стартиранС Π½Π° Π°Ρ€Ρ…ΠΈΠ²Π° с ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° "python Π°Ρ€Ρ…ΠΈΠ²".

ΠšΠΎΠ½ΠΊΡƒΡ€ΡΠ½Π°Ρ‚Π° Π·Π°Π΄Π°Ρ‡Π° бСшС Ρ€Π΅ΡˆΠ΅Π½Π° Ρ‡Ρ€Π΅Π· Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ ZIP Π°Ρ€Ρ…ΠΈΠ² ΠΈ Π²ΠΌΡŠΠΊΠ²Π°Π½Π΅Ρ‚ΠΎ ΠΌΡƒ Π² тСкста Π½Π° ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€Π°. Π—Π° Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ Π½Π° корСктността Π½Π° структурата Π½Π° Ρ„Π°ΠΉΠ»Π°, ΠΈΠΌΠ°ΠΉΠΊΠΈ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅Ρ‚ΠΎ Π½Π° края Π½Π° оригиналния Ρ„Π°ΠΉΠ» с ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅Ρ‚ΠΎ β€˜print(Β«Thanks for playing!Β»)’, бСшС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΏΠΎΠ»Π΅Ρ‚ΠΎ Π·Π° ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€ Π² сСкцията EOCD, Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π° Π² самия ΠΊΡ€Π°ΠΉ.

ΠŸΠΎΡΡ‚ΠΈΠ³Π°Π½Π΅ Π½Π° изпълнСниС Π½Π° ΠΊΠΎΠ΄ Ρ‡Ρ€Π΅Π· ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ» Π½Π° тСкста Π½Π° ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€Π° Π² Python скрипт
ΠŸΠΎΡΡ‚ΠΈΠ³Π°Π½Π΅ Π½Π° изпълнСниС Π½Π° ΠΊΠΎΠ΄ Ρ‡Ρ€Π΅Π· ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ» Π½Π° тСкста Π½Π° ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€Π° Π² Python скрипт


Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru
ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster