我来分享一个小技巧,Burp修改response欺骗
小胖子 (VIP你快回来,园长欺负我!) | 2014-05-29 11:38
上次看到某同学在问,很多人都说用fiddler。
在drops里面的burp教程也是一笔带过,没有很好的实例。
这里就说一下,很多网站,在做验证的时候,是基于js的验证,判断浏览器返回的json也好,布尔值也好,来判断是否跳转,判断是否合法等,我们先不讨论这种方式的合理性和逻辑性,先暂且讨论,如何修改response来达到我们的预期目的。
在某网站的找回密码流程,验证密保答案是否正确,在源代码里看到了如下代码。
<script type="text/javascript">
var errMsg = "";
function checkAnswer() {
var answerObj = document.getElementById("answer");
var answer_tip = document.getElementById("answer_tip");
var username = document.getElementById("username").value;
if(isEmpty(answerObj.value))
{
answer_tip.innerHTML = "请填写问题答案!";
answer_tip.style.display = "block";
answerObj.focus();
return false;
}
else {
var flag = $.ajax({url:"/verifyAnswer.shtm",type:"POST",async:false,data:{username:username,answer:escape(answerObj.value.trim())} });
//返回值
flag = flag.responseText.trim();
if(flag == "false")
{
answer_tip.innerHTML = "您输入的问题答案有误,请确认!";
answer_tip.style.display = "block";
answerObj.focus();
return false;
}
}
answer_tip.style.display = "none";
return true;
}
function setErrMsg()
{
var answer_tip = document.getElementById("answer_tip");
if(!isEmpty(errMsg))
{
answer_tip.innerHTML = errMsg;
answer_tip.style.display = "block";
}
}
setErrMsg();
</script>
这里看出,只要返回是true,就进入下一个流程。
其实burp很早就给我们提供了这个功能,只是很多文章都是一笔带过没有仔细说明。
我们在密码找回界面随意填写答案wooyun,点击发送。
这里我们看到,它将我们的用户名和密保答案POST到了验证页面。
这里,点击action里的do intercept --> response this request
点击这个选项后,Forward当前包,POST出去。
然后burp就能收到response返回并且截断。
因为我们的乱填的密码,所以返回是FALSE,我们修改成TRUE。
果断看到了密码修改界面。
抛砖引玉,这个的用处当然大得很,欢迎大牛来喷我等小菜,只是昨天又有人问起我这个,我就写出来,方便大家。