buuctf 刷題記錄 [第二章 web進階]XSS闖關


buuctf 刷題記錄 [第二章 web進階]XSS闖關

RktrVK.png

第一關

RktRxA.png

第二關

Rkthrt.png

查看源代碼

RktTIS.png

換個username試試

RktbGQ.png

接下來的思路是嘗試閉合var username = '';並和最后面的</script>

方法失敗,因有一個escape函數

改用直接alert的方式

RkNQRH.png

payload:
?username=';alert(1);//

閉合了var username = 前半個單引號,執行alert函數(因為是處於<script></script>函數)然后閉合后面的所有css源碼

第三關

RkNxld.png

不用管后面的代碼,直接注釋掉,開頭使用了兩個包裹

所以使用兩個''閉合即可

payload:
'';alert(1);//

RkUlkT.png

第四關

頁面10秒后會重定向

RkUJ1J.png

這里有一個知識點:

偽鏈接
javascript:alert(1),瀏覽器會把javascript后面的那一段內容當做代碼,直接在當前頁面執行。

RkUYc9.png

直接javascript代碼利用重定向

RkUa0x.png

payload:

?jumpUrl=javascript:alert(1)

其實這關也有個暗示,就是沒有username

if(getQueryVariable('autosubmit') !== false){
    		var autoForm = document.getElementById('autoForm');
    		autoForm.action = (getQueryVariable('action') == false) ? location.href : getQueryVariable('action');
    		autoForm.submit();
    	}else{
    		
    	}
		function getQueryVariable(variable)
		{
		       var query = window.location.search.substring(1);
		       var vars = query.split("&");
		       for (var i=0;i<vars.length;i++) {
		               var pair = vars[i].split("=");
		               if(pair[0] == variable){return pair[1];}
		       }
		       return(false);
		}

第五關

兩個判斷

首先接受參數autosubmit

判斷autosubmit是否等於false不是的話,繼續執行

接下來判斷variable

RkU54S.png

=作為分隔

payload:

?autosubmit=1&action=javascript:alert(1)

RkUjEV.png

第六關

Rka0rn.png

這是一個

AngularJS 1.4.6框架

參考:
AngularJS XSS
因為版本是1.4.6所以需要沙箱逃逸
AngularJS Sandbox Bypasses

RkarV0.png

具體就不研究了,xss價值不太大

payload:
?username={{'a'.constructor.prototype.charAt=[].join;$eval('x=1} } };alert(1)//');}}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM