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

xss靶场详解

目录

1.第一题

2.第二题

3.第三题

4.第四题

5.第五题

6.第六题

7.第七题

8.第八题


1.第一题

在源码script标签里边,innerhtml是用于访问或修改 HTML 元素内的 HTML 内容的,这里是访问spaghet这个元素的,并通过括号里面的东西搜索当前页面有没有somebody这个参数,有的话使用get传参的方式给somebody传一个值,然后+Toucha Ma Spaghet!,如果没有传值,默认传Somebody+Toucha Ma Spaghet!,然后赋值给spaghet,放在h2标签中,显示出来。

因为他利用innerHTML直接更新somebody参数,所以我们可以利用

?somebody=<svg%20οnlοad=alert(1337)>在svg加载完成以后执行我们的xss代码

2.第二题

在这里面我们get传入jeff的值给jeff,然后ma是空,eval执行ma=ma name 传的值,然后settimeout延时1秒把ma赋值给manme.

        因为这次使用的是innertext,他会把我们的标签整个识别成一个字符串输出就不能用一开始的

我们可以把eval进行闭合

?jeff=aaa";alert(1337);"

带入就会是这样,前后引号都闭合了,eval就执行alert

`ma = "Ma name aaa";alert(1337);"" `

3.第三题

 replace是用来移除wey 中的所有 < 和 > 字符。

  • /[<>]/g 是一个正则表达式,匹配 < 或 > 字符。
  • g 是一个全局标志,表示将会在整个字符串中查找所有匹配的字符,而不仅仅是找到第一个匹配后就停止。

这里因为过滤了<>,我们不能用先前的方式了,所以我们使用onclick进行聚焦,只要用户点击输入框就会触发

同样的还有onfocus也是需要用户进行点击

        为了不让用户交互也可以完成,我们可以用autofocus和onfocus一起,autofocus把焦点放在输入框上,onfocus把焦点事件进行触发,单独使用autofocus不会触发焦点事件,并且autofocus不包含代码。

        所以要用?wey=aaa"%20οnfοcus="alert(1)"%20autofocus="

4.第四题

因为这里面有用action进行提交,并且没有过滤,在提交的时候可以触发我们传入的xss代码,同样在<a>标签里面我们也可以把href写入<a href="javascript:alert('Hello!')">,这样用户点击链接就会触发

?ricardo=Javascript:alert(1337)

5.第五题

因为括号等东西被过滤了,我们就要考虑绕过,尝试用编码绕过

把(1337)先用html实体编码再用url进行编码

成功绕过

?markassbrownlee=<svg%20οnlοad="alert%26%23x0028%3B%26%23x0031%3B%26%23x0033%3B%26%23x0033%3B%26%23x0037%3B%26%23x0029%3B">

6.第六题

这里过滤掉了字母数字,我们就只能借助一些别的工具和别的编码

https://jsfuck.com/

这个网站会把我们的输入编码为[] ! +组合

但是+好会被解析为空格,所以还要进行url编码

7.第七题

这里可以直接用

?mafia=confirm(1337)

但是真正的考点不是这个

我们可以通过

Function(/ALERT(1337)/.source.toLowerCase())()

绕过

    /ALERT(1337)/ 是一个正则表达式,用于匹配字符串 "ALERT(1337)"

    .source 属性返回正则表达式的源码部分,不包括前后的斜杠,即 "ALERT(1337)"

    toLowerCase() 方法将字符串中的所有字母转换为小写。

因此,/ALERT(1337)/.source.toLowerCase() 返回  alert(1337)

Function 是一个构造函数,用于动态创建一个新的函数。

Function("alert(1337)") 会创建一个函数

最后,() 用于立即调用刚刚创建的函数。

8.第八题

这里面有DOMPurify框架,很难绕过

但是setTimeout函数内的ok参数没有任何ok定义,所以我们可以使用DOM破坏

  

由于前端的一些特性,当boomer=<a id=ok href=tel:alert(1337)>时,settimeout(ok,2000)会获取到<a>标签的href内容,并执行,所以我们可以利用这个来进行绕过,但是如果是JavaScript:alert(1)的话,会被DOMPurify框架进行过滤,我们可以在他的文件找到白名单,然后利用白名单执行我们的alert(1337)

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Redis的数据结构——Hash表
  • 如何提升 RocketMQ 顺序消费性能?
  • 如何在Linux/Debian/Ubuntu上将WebP图片转换为PNG格式
  • PCIE过渡时间(Transition Time)To P2、From P2、TO/From Non P2三个参数
  • 【pyqt5】QLineEdit中的文本输入限制方式,输入校验规则的应用详解
  • 文心快码 Baidu Comate 前端工程师观点分享:以文心快码 Baidu Comate为例,智能代码助手需要什么(一)
  • 《重生到现代之从零开始的C语言生活》—— 指针3
  • 手机运动信息管理系统
  • Oracle(76)如何收集统计信息?
  • 深度解析Python PyInstaller打包EXE的详细教程
  • C#发送邮件功能实现全面指南?有哪些方法?
  • C语言--01基础数据类型
  • 前端使用 Konva 实现可视化设计器(21)- 绘制图形(椭圆)
  • 【设计模式】六大原则-下
  • OpenAI 重回巅峰:ChatGPT-4O 最新模型超越谷歌 Gemini 1.5,多项测试夺冠!
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • angular学习第一篇-----环境搭建
  • docker python 配置
  • flask接收请求并推入栈
  • Linux后台研发超实用命令总结
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • Perseus-BERT——业内性能极致优化的BERT训练方案
  • python3 使用 asyncio 代替线程
  • Redash本地开发环境搭建
  • 漫谈开发设计中的一些“原则”及“设计哲学”
  • 前端面试总结(at, md)
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 听说你叫Java(二)–Servlet请求
  • 项目管理碎碎念系列之一:干系人管理
  • elasticsearch-head插件安装
  • ​secrets --- 生成管理密码的安全随机数​
  • # C++之functional库用法整理
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • (13):Silverlight 2 数据与通信之WebRequest
  • (2)MFC+openGL单文档框架glFrame
  • (机器学习-深度学习快速入门)第一章第一节:Python环境和数据分析
  • (简单) HDU 2612 Find a way,BFS。
  • (三)centos7案例实战—vmware虚拟机硬盘挂载与卸载
  • (图)IntelliTrace Tools 跟踪云端程序
  • (五)c52学习之旅-静态数码管
  • (一)Thymeleaf用法——Thymeleaf简介
  • (原創) 如何使用ISO C++讀寫BMP圖檔? (C/C++) (Image Processing)
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • (转)甲方乙方——赵民谈找工作
  • (自用)gtest单元测试
  • .NET CF命令行调试器MDbg入门(四) Attaching to Processes
  • .NET Core 发展历程和版本迭代
  • .NET Micro Framework初体验(二)
  • .NET 的静态构造函数是否线程安全?答案是肯定的!
  • @media screen 针对不同移动设备
  • [ 攻防演练演示篇 ] 利用通达OA 文件上传漏洞上传webshell获取主机权限
  • [240527] 谷歌 CEO 承认 AI 编造虚假信息问题难解(此文使用 @gemini 命令二次创作)| ICQ 停止运作
  • [AI]ChatGPT4 与 ChatGPT3.5 区别有多大
  • [Android]RecyclerView添加HeaderView出现宽度问题
  • [Angular 基础] - 数据绑定(databinding)