SQL注入:原理及示例

SQL注入攻击是一种在真实环境中较为常见的漏洞。主要由用户在于服务端数据库,产生交互时,插入恶意数据,从而产生的一种web漏洞,该漏洞可能导致服务端敏感数据泄露,读写数据,严重可控制服务器主机

sql注入示例

前端:用户登录表单

<form action="login.php" method="post">
  用户名:<input type="text" name="username">
  密码:<input type="password" name="password">
  <input type="submit" value="登录">
</form>

后端 :通过拼接用户输入,查询数据库

<?php
$username = $_POST['username'];
$password = $_POST['password'];
// 错误的示例:直接将用户输入拼接到SQL语句中
$query = "SELECT * FROM users WHERE username = '$username' AND password = '$password'";
$result = mysqli_query($conn, $query);
?>

当正常用户在前端用户登录表单,输入登录信息,提交到后端服务器时,会将用户输入拼接到数据库查询语句中,进行用户登录的验证

当恶意用户进行登录时会构造下方sql语句从而进行绕过

用户名:admin' --  密码:000000

此时拼接到sql语句中

SELECT * FROM users WHERE username = 'admin' -- ' AND password = '000000'

当此sql语句进行查询时将会直接登录admin用户,无论密码是否正确

原理:

输入用户名时拼接了sql语句,通过 ' 对用户名进行闭合, --  将后续sql语句进行注释。此时数据库进行查询,如果存在用户名为admin的用户,结果返回为真,及可登录。

扩展:如何快速找到真实站点存在的sql注入漏洞

1.打开google[需vpn]浏览器使用高级查询语法,查询可能存在漏洞的url

sql注入漏洞,查询语法集成

2.在注入点输入 ' 观察页面有无异常

3.如有异常进行后续攻击

存在SQL注入漏洞网站[不管用或修复,评论@我换新]

url: https://www.uni-1.com.hk/about_en.php?id=2
注入点类型:数值
sql报错回显:无
sql语句执行:[order by] [union]
字段数:14
回显点:12,13,14

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQL注入双写绕过是一种SQL注入攻击的技术手段,用于绕过一些简单的防御机制。其原理如下: 1. SQL注入简介:SQL注入是一种常见的安全漏洞,攻击者通过在用户输入的数据中插入恶意的SQL代码,从而执行非法的数据库操作。这些恶意代码可以修改、删除或者泄露数据库中的数据。 2. 双写绕过原理:在一些情况下,开发人员会对用户输入进行简单的过滤,例如替换特殊字符或者转义字符。然而,攻击者可以利用这种过滤机制中的漏洞,通过双写绕过来绕过过滤。 - 双写:攻击者可以利用某些字符的特性,在输入中使用两个相同的字符来绕过过滤。例如,如果过滤机制将单引号(')替换为两个单引号(''),那么攻击者可以在输入中使用两个单引号来绕过过滤。 - 绕过:通过使用双写来绕过过滤,攻击者可以成功地插入恶意的SQL代码,从而执行非法的数据库操作。 3. 示例:假设有一个登录页面,用户需要输入用户名和密码进行登录。开发人员对用户输入进行了简单的过滤,将单引号替换为两个单引号。攻击者可以利用双写绕过来绕过这个过滤机制。 - 原始查询:SELECT * FROM users WHERE username = 'admin' AND password = 'password' - 过滤后的查询:SELECT * FROM users WHERE username = 'admin'' AND password = 'password' 攻击者可以在用户名输入框中输入 `' OR '1'='1`,这样在拼接SQL语句时,会变成: SELECT * FROM users WHERE username = '' OR '1'='1' AND password = 'password' 这样,攻击者成功绕过了过滤机制,并且可以登录到管理员账户。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值