xss漏洞复现

目录

第一关

第二关

第三关

第四关

第五关


第一关

要求:

Pop an alert(1337) on sandbox.pwnfunction.com.

No user interaction.

代码:

<!-- Challenge -->

<h2 id="spaghet"></h2>

<script>

spaghet.innerHTML = (new URL(location).searchParams.get('somebody') || "Somebody") + " Toucha Ma Spaghet!"

</script>

第一步先判断传参点,发现位于倒数第二行。

<script>alert(1337)<script> 被过滤了

发现有一个标签没有被过滤,执行js代码

第二关

要求:

Pop an alert(1337) on sandbox.pwnfunction.com.

No user interaction.

<h2 id="maname"></h2>

<script>

let jeff = (new URL(location).searchParams.get('jeff') || "JEFFF")

let ma = ""

eval(`ma = "Ma name ${jeff}"`)

setTimeout(_ => {

maname.innerText = ma

}, 1000)

</script>

看源码初步判断漏洞点 eval(`ma = "Ma name ${jeff}"`)

查看html页面

输出到了jefff的位置

alert(1337)被当作字符串输出到页面,运用sql中逃逸引号闭合

最后再加上-

第三关

<div id="uganda"></div>

<script>

let wey = (new URL(location).searchParams.get('wey') || "do you know da wey?");

wey = wey.replace(/\<\>/g, '')

uganda.innerHTML = `<input type="text" placeholder="${wey}" class="form-control">`

</script>

第四关

<form id="ricardo" method="GET">

<input name="milos" type="text" class="form-control" placeholder="True" value="True">

</form>

<script>

ricardo.action = (new URL(location).searchParams.get('ricardo') || '#')

setTimeout(_ => {

ricardo.submit()

}, 2000)

</script>

ricardo.submit() 发现提交没做任何限制就直接上传js。

第五关

<h2 id="will"></h2>

<script>

smith = (new URL(location).searchParams.get('markassbrownlee') || "Ah That's Hawt")

smith = smith.replace(/\\(\\\`\\)\\\\/g, '')

will.innerHTML = smith

</script>

没有过滤<>那就可以用img标签

括号被过滤,给括号编码(运用location)

相关推荐
lpfasd12338 分钟前
node-sass 停止维护!老项目迁移 Dart Sass 完整教程
前端·rust·sass
Data analyse4563 小时前
rnweb 回放数据量太大怎么办?分片存储与断点续传的实现思路
前端·网络·算法·数据分析
xiaogai_gai3 小时前
金蝶收料通知单查询策略实战教程:从源系统拉取到中间层落地的完整路径
java·前端·数据库
环境栈笔记4 小时前
指纹浏览器 WebRTC 怎么设置?从 ICE 候选、代理出口到功能验证
前端·人工智能·后端·自动化
赵大仁4 小时前
官网性能优化实战:LCP 3.2s → 2.1s、CLS 0.107 → 0,以及被我推翻的 6 个判断
前端·性能优化·cls·lcp·core web vitals
xiancai_xianyu4 小时前
Text2SQL落地生产库前,SQL要过哪三道闸
前端·数据库·sql·sql注入·text2sql·ai agent开发·企业级ai框架
小羊没烦恼!5 小时前
T-SQL查询进阶--理解SQL SERVER中的分区表
服务器·开发语言·前端·javascript·html
史瓦辛格5 小时前
给 DeepSeek Harness 写费用插件:把「这次会话花了多少钱」算准
前端·deepseek
星光不问赶路人5 小时前
Vue 3 + TypeScript 中 enum 的使用实践
前端·vue.js
鸥梨菌Honevid5 小时前
UVM 中 REQ 和 RSP 类型详解:从通信模型到 item_done 与 put_response
java·前端·servlet