Wpis z mikrobloga

Cześć!
W dzisiejszym odcinku #od0dopentestera zaczniemy od języka #python

Co złego może być w 2 linijkach:

imie = input("Twoje imie:")
print ("Witaj ", imie)

Funkcja input to tak naprawdę eval połączony z raw_input(treść) co można sprawdzić tutaj.
Możliwe jest zatem wykonanie dowolnego kodu, eval służy bowiem do dynamicznego wykonywania treści.
Dla przykładu wyświetlimy zawartość bieżącego katalogu.
Przekazywany przez nas ciąg znaków musi się zmieścić w 1 linijce tekstu.
Nie możemy zatem użyć import os a następnie wywołać funkcji system.
Skorzystamy z alternatywnej składni: __import__('os')
Oczywiście to tylko przykład, używając tego schematu możemy wykonać dowolną funkcję z dowolnego modułu.
Jak zatem poprawić ten kod? Wystarczy zamienić input na raw_input.
Co ciekawe kod ten zadziała jedynie w Python 2.

#programowanie #informatyka #webdev
KacperSzurek - Cześć!
W dzisiejszym odcinku #od0dopentestera zaczniemy od języka #py...
  • 8
@penguin: Trochę tak. Programista używa danej funkcji, pentester czyta tekst małym drukiem i zastanawia się jak użyć danej funkcjonalności w nietypowy sposób.
@Razi91 rzeczywiście ciężko znaleźć jakieś praktyczne zastosowanie w dzisiejszych czasach
Tym przykładem chciałem pokazać jak ważne jest nazewnictwo.
Funkcja nie nazywa się bowiem eval_input więc większość osób założy, że po prostu zwraca tekst.