[GWCTF 2019]mypassword
注册登录
这里加载了一个js文件
60d487b4-04d2-4e33-9aad-fbe0264c5ac6.node3.buuoj.cn/js/login.js
1 | if (document.cookie && document.cookie != '') { |
可以看出,用户名和密码都填入了表单
登录成功后有一个feedback.php的用户反馈
可以看出,用户名和密码都填入了表单
登录成功后有一个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;
}
}
}
审计代码可以看出对输入的内容有过滤,但是只是替换为空很容易绕过,例如是incookieput的话,替换后会剩下input。由于login.js中有记录密码的功能,所以我们可以构造一个表单在feedback页面提交,在 http://http.requestbin.buuoj.cn (RequestBin提供了一个URL,该URL将收集对其发出的请求,首页点击create a requestbin)页面接收flag
1 | poc |
参考链接: