zoukankan      html  css  js  c++  java
  • pikachu的csrf攻击

    一、get型csrf

    1.首先登陆一下,lucy:123456

    发现能够登陆

    2.我们尝试修改一下个人信息并提交,同时利用BurpSuite抓包查看修改个人信息的请求内容,我们改一下地址

     

     从提交的请求来看,后台没做CSRF token,同时也是通过GET请求来提交修改信息,我们拿到这个,修改一下,然后让lucy点击就好,我们构造的URL中把地址add改为hacker。lucy一点击就修改了地址。

     

     3.GET请求修改个人信息,所有的参数都在URL中体现,这种方式使比较好利用的,我们只要能够伪造出来这个链接,把对应的参数内容修改成为我们需要的值,让带有登录态的用户去点击就完成了我们的攻击。

    二、post型csrf

    1、 如果是POST型的,所有参数在请求体中提交,我们不能通过伪造URL的方式进行攻击

    这里的攻击方式跟XSS中POST类型是一样的,攻击者可以搭建一个站点,在站点上做一个表单,诱导lucy点击这个链接,当用户点击时,就会自动向存在CSRF的服务器提交POST请求修改个人信息。

    在自己的机子上编写一个html文件

    <html>
    <head>
    <script>
    window.onload = function() {
      document.getElementById("postsubmit").click();
    }
    </script>
    </head>
    <body>
    <form method="post" action="http://192.168.171.133/pikachu/vul/csrf/csrfpost/csrf_post_edit.php">
        <input id="sex" type="text" name="sex" value="girl" />
        <input id="phonenum" type="text" name="phonenum" value="12345678922" />
        <input id="add" type="text" name="add" value="hacker" />
        <input id="email" type="text" name="email" value="lucy@pikachu.com" />
        <input id="postsubmit" type="submit" name="submit" value="submit" />
    </form>
    </body>
    </html>
    将自己的html文件地址发给受害者就会自动修改信息
    三、CSRF token
    1.

     CSRF的主要问题是敏感操作容易被伪造,我们可以加入Token让请求不容易被伪造

    • 每次请求,都增加一个随机码(需要够随机,不容易被伪造),后台每次对这个随机码进行验证

        我们进入Pikachu平台的CSRF(token)页面并登录,我们可以看一下这个GET请求

     跟前面比较,这里多了一个Token,如果后台对提交的Token进行了验证,由于Token是随机的,我们就无法伪造URL了

    看下控制台源码,看下这个表单,每次点击修改个人信息 都会去访问 token_get_edit_.php 这个文件,这个文件就会生成一个token,
    value就是后端发过来的,type是隐藏的额,在前端看不到,但是在源码中能看到。每次点提交,token也会被提交到后台,后台会对token进行验证,如果和当前session里面的token相等,才会让你提交。





  • 相关阅读:
    导包路径
    django导入环境变量 Please specify Django project root directory
    替换django的user模型,mysql迁移表报错 django.db.migrations.exceptions.InconsistentMigrationHistory: Migration admin.0001_initial is applied before its dependen cy user.0001_initial on database 'default'.
    解决Chrome调试(debugger)
    check the manual that corresponds to your MySQL server version for the right syntax to use near 'order) values ('徐小波','XuXiaoB','男','1',' at line 1")
    MySQL命令(其三)
    MySQL操作命令(其二)
    MySQL命令(其一)
    [POJ2559]Largest Rectangle in a Histogram (栈)
    [HDU4864]Task (贪心)
  • 原文地址:https://www.cnblogs.com/p201721420016/p/12034864.html
Copyright © 2011-2022 走看看