分享一个小技巧,Burp修改response欺骗

  • A+
所属分类:神兵利刃

上次看到某同学在问,很多人都说用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,点击发送。 

分享一个小技巧,Burp修改response欺骗 


这里我们看到,它将我们的用户名和密保答案POST到了验证页面。 


这里,点击action里的do intercept -->  response this request 
分享一个小技巧,Burp修改response欺骗 
点击这个选项后,Forward当前包,POST出去。 

然后burp就能收到response返回并且截断。 

分享一个小技巧,Burp修改response欺骗 


因为我们的乱填的密码,所以返回是FALSE,我们修改成TRUE。 


果断看到了密码修改界面。 




抛砖引玉,这个的用处当然大得很,欢迎大牛来喷我等小菜,只是昨天又有人问起我这个,我就写出来,方便大家。

1#Reserved | 2014-05-29 11:45

消灭O回复

 

2#zzR | 2014-05-29 11:46

mk姐夫

 

3#zzR | 2014-05-29 11:49

乌云有这样案例的,好像还放到了微博上

 

4#大白菜 | 2014-05-29 11:49

。。。新思路哈

 

5#魇 | 2014-05-29 12:14

感谢一个,淫荡的头像跟思路

 

6#园长 | 2014-05-29 12:17

胖妞,看不懂啊。好男好难。

 

7#阿布 | 2014-05-29 12:19

最后那个图没看懂 改哪里。

 

8#B1uH4ck | 2014-05-29 12:36

我在想,他的密码修改界面是存在于客户端的还是服务器动态传回的,他返回的false是给js的,那javascript:也可以控制js的啊。

 

9#z7y | 2014-05-29 12:43

感谢么么哒!

 

10#超威蓝猫 | 2014-05-29 12:50

就这个例子来说 直接控制台重写checkAnswer()不就行了

 

11#Ki11 | 2014-05-29 12:54

@阿布 最下面一行中间位置有个FALSE

 

12#Jumbo | 2014-05-29 12:56

貌似有人问过这个问题,说直接把错误改成成功,就绕过了

 

13#elysier | 2014-05-29 13:10

repeater中还是不行呀。

 

14#小学猹 | 2014-05-29 13:36

淫荡的思路又来了

 

15#索马里的海贼 | 2014-05-29 13:43

一般来说。。如果如果一个人的js水平能够找到和看懂请求返回的流程并构造合适的请求绕过js判断的话。。。

这个人基本上就已经不用burp构造了,直接js里面扒拉出来跳转地址就完了

如果这个人的js水平不足以分析流程构造合适返回包的话。。那拿着burp也不知道怎么改。。。

所以楼主这个命题。。。

 

16#咖啡 | 2014-05-29 13:45

学习了

 

17#NaiBa | 2014-05-29 13:53

这个方法好。 有时候这个功能很需要的。

 

18#Hxai11 | 2014-05-29 14:24

觉得burp真的很不错,找个时间要好好学学

 

19#Ivan | 2014-05-29 14:26

方法不错 学习了。

 

20#随时回来 | 2014-05-29 14:38

我是捧场王  顶胖子   学到一记

 

21#[email protected] | 2014-05-29 14:43

其实楼主教会了劳苦大众如何修改响应报文内容

 

22#applychen | 2014-05-29 14:48

在match and replace里面选择response body把false替换为ture就好了。

 

23#beastk | 2014-05-29 14:49

其实在12306中,可以用楼主的方法修改自动刷新的时间,当然JS熟悉的话,可以直接用JS把相关函数HOOK了。

 

24#病狗 | 2014-05-29 15:40

都不知道还有这个选项

 

25#Spongebob | 2014-05-29 16:03

get?

 

26#Azui | 2014-05-29 17:45

学习了

 

27#小胖子 | 2014-05-29 18:33

@索马里的海贼 有的人懂,但不是所有人都懂,不要以偏概全。

 

28#/fd | 2014-05-29 18:34

why not fiddler2

 

29#从容 | 2014-05-29 18:39

mark

 

30#px1624 | 2014-05-29 18:42

。。。

 

31#Coody | 2014-05-29 19:01

 

32#xiaoL | 2014-05-29 19:11

不知道楼上几个在纠结这个JS干嘛...

楼主都说是在介绍这个功能了...

 

33#核攻击 | 2014-05-30 09:39

我觉得按F12改“if(flag == "false") ”更快~

 

34#her0ma | 2014-05-30 10:39

感谢撸主的分享,学习了~

 

35#iskit | 2014-05-30 11:27

@核攻击 同意

 

36#Anonymous | 2014-05-31 01:13

胖爷么么哒

 

37#魂淡、 | 2014-05-31 11:52

真棒。

 

38#从容 | 2014-05-31 12:13

胖妞,楼上的所有人要给你生孩子- -.

 

39#Jeremy | 2014-05-31 16:30

fiddler也可以。。。。。。

 

40#奎尼 | 2014-05-31 17:14

why not mitmproxy.

 

41#Metas | 2014-06-06 10:59

@核攻击 贱贱的样子。

 

42#白非白 | 2014-06-12 15:26

btcf上有一关杀鬼的游戏,当时果断用zaproxy截断response修改js中主角攻击速度通关。

 

43#Sogili | 2014-06-12 17:41

QQ截图20140612174054.jpg

这个没人说?

 

44#Backer | 2014-06-12 20:25

因为我们的乱填的密码,所以返回是FALSE,我们修改成TRUE。 

果断看到了密码修改界面。

这步骤没图不懂撒。

 

45#Comer | 2014-06-12 23:56

@Sogili 嗯,一般我这个都是开着的,看的比较全。不过这个是全局的监听response(当然也可以细化的做多层过滤),LZ的手法是针对单独的请求查看response信息。


  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: