csrf漏洞复现(附源码)

csrf全称跨站请求伪造,攻击者盗用受害者用户的身份,以受害者的身份发送恶意请求

下面进行复现,(本人前端、后端小白,代码有些不规范,大佬们见谅)

这里我创建了三个文件

csrf漏洞复现(附源码)_第1张图片

login.php是用户的登入页面

csrf漏洞复现(附源码)_第2张图片

main.php是商品购买页面

csrf漏洞复现(附源码)_第3张图片

sqlcon.php存放操作数据库的各个函数。

源码如下:

以下代码不只存在csrf漏洞,还存在SQL盲注 有兴趣的可以注一下

login.php页面




	login


username:

password:

main.php页面 sqlcon.php页面 query($sql); if ($result->num_rows > 0) { $row = $result->fetch_assoc(); if ($row['password'] === $_GET['password']){ setCookie("user",'xuanling'); header('Location: http://127.0.0.1/csrf/main.php'); }else{ return "kong"; } } } function chaxunprice($name){ $conn = sqlconn(); $sql = "select * from produce where name='$name'"; $result = $conn->query($sql); if ($result->num_rows > 0) { $row = $result->fetch_assoc(); echo '商品:'.$row['name'].' 剩余:'.$row['sum'].' 价格:'.$row['price'].'元'; print << 购买的个数: EOT; } $conn->close(); } function buy($name,$sum){ if ($_COOKIE['user'] !='xuanling') { break; } $conn = sqlconn(); $sql = "update produce set sum=sum-$sum where name = '$name'"; $conn->query($sql); $conn->close(); } ?>

 

构造恶意请求:这里伪装xuanling用户构造恶意请求。为了方便我直接将cookie值设置为xuanling

csrf漏洞复现(附源码)_第4张图片

apple的初始个数是43,如果不知道用户的cookie,将下面的恶意代码发给用户,用户如果此时正在浏览该商品页面,那么用户在不知道的情况下购买了22个apple,(下面url也可以转换成短连接,以增加其隐藏性,让受害者更容易相信,有很多转换短连接的网站大家自行百度)

http://127.0.0.1/csrf/main.php?shangpin=apple&geshu=22&buy=%E8%B4%AD%E4%B9%B0

结果如下:

csrf漏洞复现(附源码)_第5张图片

在实际情况下,如果修改密码的页面存在csrf漏洞,那么可能攻击者就有可以构造出修改密码的恶意代码。

 

你可能感兴趣的:(安全,php)