csrf源码分析

pikachu-csrf:

CSRF(get)

allen的住址是nba76,lucy的住址为usa,allen想要把lucy的住址改为nba77.
allen先登陆自己的账号,去到修改信息的页面,并修改自己的住址为nba77,发现地址add直接以get请求显示在url中,其他的信息也是,于是伪造了lucy修改地址的url为:localhost/pikachu/vul/csrf/csrfget/csrf_get_edit.php?sex=girl&phonenum=12345678922&add=nba77&email=lucy%40pikachu.com&submit=submit诱导lucy点击这个链接

lucy的原信息:

lucy在登陆的情况下(cookie未失效),不小心点击了allen伪造的这个链接,于是lucy的地址被改成了nba77

代码分析:
提交修改的请求为GET请求,有固定的变量可以控制,且请求中没有token验证参数,也没有验证refer

CSRF(post)

情景和上面说的是一样的,只不过这里是以post提交的数据,allen同样可以伪造lucy修改地址的请求,http://localhost/pikachu/vul/csrf/csrf_poc.php,诱导lucy点击

lucy的原信息:

lucy在登陆的情况下(cookie未失效),不小心点击了allen伪造的链接,并且点击了这个submit按钮,那么lucy的地址就悄悄被改了。(这里还是只是演示的原理,实际中的伪装性很高,不可能给你一个submit按钮让你按,url也会伪装的)


lucy发现地址已经被改了


csrf_poc.php

<html><body> <form  name="px"  method="post"  action="http://localhost/pikachu/vul/csrf/csrfpost/csrf_post_edit.php"><input type="hidden" name="sex"  value="girl"><input type="hidden" name="phonenum" value="12345678922"><input type="hidden" name="add" value="nab77"><input type="hidden" name="email" value="lucy@pikachu.com"><input type="submit" name="submit" value="submit"> </form><!--  <script>document.px.submit(); </script> --></body></html>
  • 小插曲:表单自动提交
    本来csrf_poc.php写的是一个自动提交的表单,代码如下:

    也不用还点击什么submit按钮才行了,直接点击url,自动提交,地址被改。但是发现行不通。我又返回去看了下allen改地址时候的请求包,发现post的数据还有submit=submit一项,而我们自动提交的表单请求包里面没有submit这个元素,所以改不了,然后我试着在form里添加submit这个元素,添加之后发现无法自动提交了,百度了一下是如果表单里有name为submit的元素,那submit()方法就不能执行,原因是submit被覆盖了。想深究的还是再去百度一下。

    代码分析:
    和GET型一样的原理,只不过这个是post类型的请求,同样没有验证refer,没有token验证,没有防止csrf的措施。

    csrf(token)

    这个属于防御了,在修复的时候细讲。

    csrf修复

    1.关键操作只接受POST请求

    2.验证码

    csrf攻击往往是在用户不知情的情况下构造网络请求,在关键地方设置验证码,增加与用户的互动,可以在一定程度上防止csrf

    3.验证referer

    HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器该网页是从哪个页面链接过来的,服务器因此可以获得一些信息用于处理。通过验证referer的值,设置referer必须来自同域的网址等,可以判断请求是合法还是不合法的。但是,由于浏览器和服务器的一些问题,这个方法也不是万无一失的,referer值用户可以设置成空,由于一些漏洞,referer值可以被篡改。Refere Check 一般用于监控CSRF攻击的发生,而不用来抵御攻击

    4.token

    CSRF攻击要成功的条件在黑客能够预测所有的参数从而构造出合法的请求。要抵御 CSRF,关键在于在请求中放入黑客所不能伪造的信息,并且该信息不存在于 cookie 之中。可以在 HTTP 请求中以参数的形式加入一个随机产生的 token,并在服务器端建立一个拦截器来验证这个 token。token要足够随机,不可预测,每次请求成功要更新token,并且最好不要出现在URL中。
    我i们可以来看看pikachu csrf(token)一栏:
    修改个人信息,抓包,发现url有token参数,并且每次请求会变化


    构造之前的请求无法修改,猜测后端有验证这个token。只有token正确才可以修改。
    代码分析:
    修改信息时需验证$_GET[‘token’]==$_SESSION[‘token’]

    set_token函数

    csrf挖掘

    一般就是看有没有token参数,测试一下有没有验证referer头等,常结合xss一起利用

web安全_皮卡丘_csrf相关推荐

  1. web安全_皮卡丘_xss

    xss源码分析 反射型主要在查询的地方,存储型主要在留言.评论的地方,dom型是特殊的反射型.pikachu的xss没有做很多过滤,重点展示的是原理,在实际情况中肯定会有很多过滤和转义的.要多积累一些 ...

  2. 皮卡丘的python程序_皮卡丘第一种

    [python]代码库from turtle import * ''' 绘制皮卡丘头部 ''' def face(x,y): """画脸""" ...

  3. python皮卡丘字符打印代码_皮卡丘第二种

    [python]代码库import turtle as t def nose(): t.penup() t.seth(90) t.fd(100) t.pendown() t.begin_fill() ...

  4. python 打印皮卡丘_来简单聊聊python的装饰器呀~

    原文链接 来简单聊聊python的装饰器呀~​mp.weixin.qq.com 导语 之前很多小伙伴留言给我说看别人写的代码经常会感觉云里雾里的,完全看不懂,其实那些代码无非就是用了些python语法 ...

  5. 皮卡丘忠实粉丝之Web实现操作系统实验(进程调度+存储管理+死锁避免银行家算法)

    **皮卡皮卡丘~~~~~~** 目录 进程调度 目的和要求 内容与步骤 运行结果 问题及心得 C语言实现代码 存储管理 目的和要求 内容与步骤 运行结果 问题及心得 C语言实现代码 死锁避免银行家算法 ...

  6. Web安全从入门到放弃之皮卡丘靶场精讲视频教程百度云下载链接(20201213整理)

    Web安全从入门到放弃之皮卡丘靶场精讲视频教程(20201213整理) 如失效,请联系:hk007.cn 课程内容介绍:含全套视频课程内容及对应皮卡丘靶场源文件 百度云盘链接:https://pan. ...

  7. Web安全 Pikachu(皮卡丘)靶场搭建.

    Pikachu(皮卡丘)靶场的概括 Pikachu(皮卡丘)是一个自带Web漏洞的应用系统,在这里包含了常见的web安全漏洞.如果你是一个想学习Web渗透测试人员,并且没有找到合适靶场,则可以使用这个 ...

  8. 皮卡丘为什么不进化_皮卡丘为啥不进化成雷丘?小智都暗示得这么明显皮卡丘还是拒绝了...

    在<神奇宝贝>中,精灵通过进化可以获得更强的战斗力,而万年不进化的皮卡丘也被许多人吐槽,其实在动画中皮卡丘曾经两次有机会进化的,就连小智都问过它的意见了,可皮卡丘自己还是选择不进化. 第一 ...

  9. 皮卡丘为什么不进化_精灵宝可梦:进化后反而变弱的精灵!皮卡丘:知道我为什么不进化了?反而会变弱!...

    动漫三分钟 和豪哥一起看动漫 主讲人:豪哥 观众朋友们大家好呀,欢迎收看本期的动漫三分钟,我是你们的豪哥.在宝可梦的世界中,存在着数不清的宝可梦.这些宝可梦们所特有的进化,堪比逆天.经过进化的宝可梦, ...

最新文章

  1. ubuntu ssh 客户端查看服务器端图形界面
  2. ai的预览模式切换_绝对高级!AI打造超酷矩阵纬度文字效果!
  3. nn.Sequential(*modules)
  4. [PHP] 现代化PHP之路:composer的安装和升级
  5. Change default duration for Fiori Toast
  6. JDK 8中的流驱动的集合功能
  7. 蓝桥杯 基础练习 回形取数
  8. es 使用ik停词_ES使用IK分词器
  9. 随机森林原始论文_推荐一个神器画出论文中酷炫的机器学习图
  10. Android反编译:使用dex2jar查看dex文件
  11. zookeeper 阿里滴滴 有点用 zookeeper主从选举方式
  12. Springboot的工作机制:4 再谈谈自动配置
  13. 谷歌方法 pdf txt azw3 epub mobi 百度云盘网盘下载
  14. 实验2 网络扫描--Nmap与X-Scan
  15. SQL查询语句精华大全
  16. luogu P1375 小猫
  17. android解析json数据格式,Android编程解析Json格式数据的方法
  18. lua深拷贝一个table
  19. 公众号文章留言评论功能开通方法(详解)
  20. 视频教程-清华-尹成老师-Python数据库3.MySQL-Python

热门文章

  1. .Net软件工程师必备面试题134道
  2. 已知数据信息为 16位,最少应附加( )位校验位,以实现海明码纠错。
  3. Python编程专属骚技巧5
  4. statistics_level参数的介绍
  5. JAVA.Properties了解一下
  6. javascript 忍者秘籍读书笔记
  7. Java 在 CMD 环境下编译
  8. [转]密码技术-实现数字信封和数字签名
  9. 10分钟学会理解和解决MySQL乱码问题
  10. css框架之960 Grid System 基本原理及使用方法