[Compfest11 Qualification] – Super-Secure-Filter (Django)

Diberi sebuah text box untuk kita menginput payload. Tampaknya kita harus menggunakan teknik SSTI untuk django framework.

Saya mencoba memasukkan flask jinja2 SSTI seperti “{{ config }}” dan “{{ ‘ }}” lalu saya menemukan code “{% load myfilters %}” maka saya coba googling dan menemukan tentang custom filters di django. Terlihat nama file yang digunakan sebagai custom filters adalah “myfilters” di line nomor 1: “{% load myfilters %}”

Saya coba input angka lebih dari 3 dan keluar exception handler django dan keluarlah nama file custom filternya yaitu “myfilters.py”. Beruntung saya tidak terkena filter “|safe” karena saya tidak memakai special characters.

Di sini saya menemukan sedikit source code juga yang dapat di expand untuk ‘ngintip’ function-function lain di dalam custom filternya yaitu “myfilters”:

Dari src code ini saya mendapat beberapa fungsi menarik:

  • @register.filter(name=’isinya‘)
  • @register.filter(name=’ambildong‘)

Fungsi “isinya” dapat saya gunakan untuk mengetahui semua atribut dari sebuah objek, sementara fungsi “ambildong” dapat saya gunakan untuk mengetahui value dari sebuah atribut dari sebuah objek.

Melihat adanya “arthropods” saya mencoba masukkan “{{ arthropods }}” dan ternyata keluar gambar baru, lalu saya coba lagi dengan memasukkan filter “isinya” dan keluarlah attribute-attribute dari objek itu.

Melihat adanya filter “ambildong” yang hanya menjalankan getattr(attr) yang akan mengambil value dari sebuah attribute, saya coba melihat value-value dari tiap attribute-attribute yang dimiliki objek ini, satu-persatu saya coba sampai mendapatkan flag.

Flag :

COMPFEST11{djan90_cu5t0m_template_filters_d0nt_forg3t_t0_set_debu9_fal5e}

Leave a Reply

Your email address will not be published. Required fields are marked *