大家好,我是小城,一个刚刚起步的学渣,笨鸟先飞,可惜我领悟得太晚。但从现在开始,我会努力加油进取变强!
啥是xss
xss基础
跨站脚本(英语:Cross-site scripting,通常简称为:XSS)是一种网站应用程序的安全漏洞攻击,是代码注入的一种。它允许恶意用户将代码注入到网页上,其他用户在观看网页时就会受到影响。这类攻击通常包含了HTML以及用户端脚本语言。
XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java,VBScript,ActiveX,Flash或者甚至是普通的HTML。攻击成功后,攻击者可能得到更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容。
我与xss的不解之缘
之前也说了,我打了巨多xss的站,看到xss都有一种亲切感,变着法儿想去搞它。咳咳!没有开车的意思
附上我之前整理的payload : xss漏洞学习心得(泪目)
接下来正式打靶场
反射型xss(get)
看到这个框,我就想一把梭我的payload,没想到刚想输入
<script>alert(/xss/)</script>
输入到一半居然输入不了,裤子脱了你给我看这个!
我当场就懵逼了

难道没入门就放弃,我肯,我主管都不肯啊,给你看了那么久xss,你给我整个搞不来?
接着审查前端代码。我diu,恍然大悟,原来是这么个锤子

在前端页面设置了长度限制
maxlength最大长度只能20,你写在前端,这不是摆明勾引我犯罪吗?
直接将最大长度改成200,再次输入payload,啧啧啧,成功弹框
反射型xss(post)
要不是标题告诉我这是xss,我下意识一个暴力破解就丢上去了!
在外面徘徊了很久都不知道怎么去解决这个问题,然后点了下tips。这…
气急败坏之下我还是输入了账号密码登录了进去
还是那个熟悉的界面,输入payload
<script>alert(/xss/)</script>
额,这次简简单单就打进来了,看了下代码,也没有过滤。
存储型XSS
入目就是一个00年代的扣扣空间留言板样式。
还是输入之前那个payload,submit一下看看效果
发现只弹了一次框,然后有个删除选项,应该是因为我们只输入了payload,没输入其他东西的缘故吧,那我们试试输入一些其他有的没的的东西。
然后发现我们之前输入的payload也被重新引用了一遍,只要点过一次submit,就会一直存储,除非删除。
DOM型xss
我们插入经典的payload
<script>alert(/xss/)</script>
发现没弹出来,害,查看源代码
发现我们输入的payload被嵌在 < a >标签里面,只需要把它闭合掉就可以执行我们的payload了,于是构造了一个新的payload
#' onclick=alert("xss")>
通过审查代码,我们可以看到构造的payload成功闭合掉了a标签,弹出弹框!
造成DOM型XSS的原因是前端的输入被DOM给获取到了,通过DOM又在前端输出,跟反射型和存储型比起来,它是不经过后台交互的
DOM型xss-x
随便输入一个参数,看看返回的是什么,这时在源码里啥也没看见
这时点击那段沙雕对白,触发onclick事件,发现了我们输入的payload被嵌套在了< a >标签里面
其实这一部分相当于两层嵌套,通过触发事件弹框。
我们可以用上一步的payload继续一把梭!
#' onclick=alert("xss")>