# [HTB] Templated Writeup
## Giới thiệu

Một web challenge đập vào mắt không có gì ngoài dòng chữ đang xây dựng :)))))
Có cho mình thêm một dòng thông tin dùng Flask/Jinja2
Nên là mình sẽ đi mò và kiếm thứ hay ho liệt kê ra
## Đối tượng
1. Template: Flask/Jinja2
2. Server: Werkzeug/1.0.1 Python/3.9.0 
## Vọc vạch
Mình có ngồi search về Werkzeug/1.0.1 thì nếu server này có bật debug thì sẽ có endpoint /console cho mình nhưng kết quả khi mình gửi request thì không thấy gì

Mình sẽ thử bruteforce xem thử có còn bất kì endpoint nào khác nữa không

Nhưng mà có một điểm chung là nó sẽ lấy endpoint đó và hiện ra ngoài trang response

Nên mình nghi ở đây mình sẽ có thể inject script được.
Ở đây dùng template Flask/Jinja2 nên mình sẽ mò thử vài payload xem thử có work không

Đúng như mình nói thì nó work thật mọi người ạ.
Vậy thì lên mạng kiếm vài payload mẫu để RCE thoi
[reference]: https://book.hacktricks.xyz/pentesting-web/ssti-server-side-template-injection/jinja2-ssti
Ở đây mình có kiếm được một payload [này](https://book.hacktricks.xyz/pentesting-web/ssti-server-side-template-injection/jinja2-ssti#:~:text=config.__class__.from_envvar.__globals__.__builtins__.__import__(%22os%22).popen(%22ls%22).read())
```
{{config.__class__.from_envvar.__globals__.__builtins__.__import__("os").popen("ls").read()}}
```
Gửi request với payload đó để kiểm tra xem ăn không nhá

Ăn luôn ạ. Vậy thì đọc file flag và lụm cái lab thoi

Tưởng sẽ đọc ra nhưng lại không hiện gì cả, nên đành phải dùng một payload khác cũng trong link mình gửi để đọc file
```
{{request.__class__._load_form_data.__globals__.__builtins__.open("flag.txt").read()}}
```
và cuối cùng cũng đọc được flag
