Skip to content

Latest commit

 

History

History

chat_not_gpt

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

Code source:

Voir https://github.com/9hozt/ctf-challenges/tree/main/HSR2023/web/chat_not_gpt

Résolution

Nous avons une partie statique correspondant à la question posée et une partie dynamique correspondant à notre input. De là, on suspecte une template injection. Les plus courantes étant sur Jinja2 (Python), on essaie d'accéder en premier lieu à des objets python.

Premier payload (cf Hacktricks, on voit différents objets/fonctions):

{{config.class.dict}}

L'objectif est d'avoir accès au module os pour RCE. Je me suis inspiré de cet article: https://podalirius.net/en/publications/grehack-2021-optimizing-ssti-payloads-for-jinja2/ Second payload:

{{ self._TemplateReference__context.joiner.__init__.__globals__.os}}

De là, nous pouvons éxécuter du code:

.popen("ls").read() 

On n'a plus qu'à se déplacer et afficher le flag avec un cat.