PHP代码审计系列基础文章(一)之SQL注入漏洞篇

1.SQL注入原理

SQL注入就是攻击者通过把恶意的SQL语句插入到Web表单的输入页面中,且插入的恶意语句会导致原有的SQL语句发生改变,从而达到攻击者的目的去让它执行一些危险的数据操作,进一步欺骗服务器去执行一些非本意的操作。简单来讲,
所有可以涉及到数据库增删改查的系统功能点都有可能存在SQL注入漏洞

一个简单的攻击原理举例:

1666658707_6357319337bb9e7e91501.png!small

在SQL注入中,我们更应该关注的是业务逻辑,例如业务中可能设计到的增删改查操作,下面通过一个简单的代码小demo来进行SQL注入的演示:

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>SQL注入小demo</title>
</head>
<body>
用户名:
<form method="GET">     //form表单通过get方式接收数据
   <input type="text" name="name" size="50" />   //通过name参数接收数据
   <br>
   <input type="submit" value="点击查询" style="margin-top:50px;">
   <?php
  $db = mysqli_connect("localhost","root","123456","demo"); //建立mysql连接
  if(!$db){
          echo "数据库链接失败!";
          exit();
  }

  $name = $_GET['name']; //通过前端设置的name参数将数据接收到后端进行处理
  $sql = "select * from user where name = '".$name."';";
  echo " 输出当前执行的SQL主句:".$sql."";
       $result = mysqli_query($db,$sql);  //执行SQL语句

   while($row=mysqli_fetch_array($result))   //取出一行数据的所有内容以数组的形式返回
  {
       echo "账号:".$row['user']."";      //输出一行数据的user字段值
       echo "密码:".$row['passwd']."";//输出一行数据的passwd字段值
  }
   mysqli_close($db);//关闭mysql连接
   ?>
</form>
</body>
</html>

1.1 PHP MySQLi基本函数

PHP MySQLi 函数允许访问 MySQL 数据库服务器。通俗来说MySQLi 下的函数用来处理PHP中关于数据增删改查的操作。

mysqli_connect()

1666659125_63573335eb03c56e2b38c.png!small

mysqli_query()

1666659261_635733bd71a242f40658c.png!small

mysqli_fetch_array()

1666659298_635733e2891232fa27f21.png!small

mysqli_close()

1666659318_635733f667a9258c5b8a5.png!small

为了方便演示实际的业务流程,我们创建demo数据库,并且创建user表,在表中插入演示数据。

1666659344_63573410c99decbb31570.png!small

这里简单演示了一下通过查询来获取数据的操作原理。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值