前端攻击(JavaScript Attacks)
低级
进入靶场后点击提提交,发现phrase错误
根据提示我们输入success,提示说token不对
查看源代码:发现phrase表示我们输入的内容,然后计算输入的token值document.getElementById("token").value = md5(rot13(phrase));
,写入token,但是为啥写入success也报token错误?
<?php
$page[ 'body' ] .= <<<EOF
<script>
function rot13(inp) {
return inp.replace(/[a-zA-Z]/g,function(c){return String.fromCharCode((c<="Z"?90:122)>=(c=c.charCodeAt(0)+13)?c:c-26);});
}
function generate_token() {
var phrase = document.getElementById("phrase").value;
document.getElementById("token").value = md5(rot13(phrase));
}
generate_token();
</script>
EOF;
?>
抓包分析:
发现我们输入的两次token值一样,猜测这个 token不是后台生成的,而是前台生成的。
打开控制台分别输入md5(rot13(“ChangeMe”)) ,md5(rot13(“success”))查看
发现我们之前输入的success时,他的token并没有变,我们尝试随便输入抓包查看token值
当我们输入hpc,他的token值依然为ChangeMe的token值
原来前台生成的 token和是用 md5(rot13(“ChangeMe”)) ,但是和后台生产的token值不一样,后台希望的token值是success的及md5(rot13(“success”))
修改token值,成功!
中级
源代码: <?php $page[ 'body' ] .= <<<