pikachu之Cross-Site-Scripting
反射型xss(get)

抓包情况

使用123</p><script>alert(666)</script>可以完成闭合

由于输入框的输入长度有限制,所以修改为100,或者直接在get参数里输入也可以

弹窗

反射性xss(post)
先用admin/123456登陆一下系统,为了获得cookie,如果想要尝试,可以在xss完成后插入beef的恶意代码来获取cookie

抓包查看

使用123</p><script>alert(666)</script>可以完成闭合

弹窗

存储型xss
在留言板进行留言123,看看html情况

使用 </p><script>alert(666)</script> 进行闭合,之后每次访问留言板都会弹窗

DOM型xss
看一下题目,发现并不会把输入的内容回显

既然是DOM型,那就看一下html代码,看到在click me!按钮被点击时,会调用onclick()函数

找到onclick()函数看一看,发现函数的作用是把输入的内容作为<a>标签的href参数拼接进去,然后将a标签通过innerhtml的方式拼接到占位符dom里面去


所以根据
function domxss(){ var str = document.getElementById("text").value; document.getElementById("dom").innerHTML = "<a href='"+str+"'>what do you see?</a>"; }
进行闭合就可以
使用123'>123</a><img src=1 onerror=alert(666)>进行闭合,点击click me按钮就弹窗,因为点击click me按钮,就会执行domxss(),从而把恶意闭合代码插入到占位符dom中

需要注意:使用innerHTML插入script脚本时候,script是不会得到执行的,所以在实验时,使用123'>123</a><script>alert(666)</script><a href='并不能弹窗

DOM型xss-x
点击请说出你的伤心往事,看js代码,只是普通的表单传值

点击 有些费尽心机想要忘记的事情,后来真的就忘掉了,会调用domxss()

domxss()函数,就是把输入的内容进行解码过滤后作为a标签的href参数,然后把a标签插入到占位符dom里面

使用控制台看看这段函数的功能,decodeURIComponent是把比如url中的%23,转换为#

构造payload www.baidu.com'><img src=1 onerror=alert(111)>点击请说出你的伤心往事,然后点击有些费尽心机…就可以完成弹窗

xss之盲打
点击提交后,并不会对输入的内容进行回显

看一下提示,登录到后台看看

后台会将用户的反馈显示给管理员,看到提交的内容的闭合方式

构造payload </td></tr><script>alert(123)</script>进行提交

管理员查看时便完成弹窗

xss之过滤

既然xss过滤,就输入一堆可以xss的常用标签,试图找到没被过滤的标签

发现img 和 confirm没被过滤 使用payload </p><img src=1 onerror=confirm(999)>可完成弹窗

xss之htmlspecialchars
输入的内容被a标签包裹,发现“<>都会被转义<>",但是单引号没被转义

方法一:利用单引号不会被转义
payload
666' οnmοuseοver='alert(1)

方法二:输入的内容会作为a标签href的值
payload
javascript:alert(1)
点击a标签时就会弹窗,javascript:是表示在触发默认动作时,执行一段JavaScript代码

xss之href输出
a标签的href参数可控,直接输入javascript:alert(1),点击a标签就可以弹窗

xss之js输出
发现输入拼接到js里了

使用123'</script><img src=1 onerror=alert(66)>闭合


本文详细探讨了不同类型的XSS攻击,包括反射型、存储型、DOM型和DOM型XSS-X,以及如何利用和防止这些攻击。通过实例展示了如何构造payload进行弹窗演示,并提到了XSS过滤、htmlspecialchars处理和JS输出等情况下的应对方法。同时,还揭示了盲打XSS和过滤策略在实际场景中的应用。


被折叠的 条评论
为什么被折叠?



