SQL注入的简介
Sql 注入是指攻击是通过将恶意的 Sql 语句插入到应用的输入参数中,让后台 Sql 服务器上解析执行进行的攻击,是目前黑客对数据库进行攻击的最常用手段之一
通俗来理解就是攻击者可以在web应用程序中事先定义好的查询语句中添加额外的SQL语句。数据库执行的时候,把这段额外的SQL语句也执行了,造成攻击。

被注入的主要原因(额外SQL段可以被执行的原因)
参数过滤不严谨
编写代码的时候 不对参数进行验和过滤,或者过滤不严谨,导致参数部分可以拼接SQL语句,从而被程序顺利执行。
例如:以下PHP代码段语句
$id = $_GET[id];
$db->query("select * from user where id = $id");
程序本意是执行“查询id=传入id的用户信息”,但如果这个时候,传入的id 被恶意篡改,
如id 传入 1 and exists(select * from admin)
那么最后执行的sql将是:
select * from user where id = 1 and exists(select * from admin)
SQL语句 "select * from user where id = 1"后面就可以被攻击者任意拼接,任意执行,从而对数据库实现攻击。
例如执行以下目的的SQL
-
收集信息、并判断数据库类型
-
根据注入参数类型,重构SQL语句的原貌
-
猜解表名、字段名
-
获取账户信息、攻击web或为下一步攻击做准备
造成的危害
-
数据信息泄露
-
绕过认证,获得非法权限
-
注入可以借助数据库的存储过程进行提权等操作
-
获取webshell 控制服务器
防范
-
校验和过滤参数
-
程序编写是要参数化语句
-
限制查询长度和类型
注意:本文仅供学习参考,非法传播及使用产生的后果自行承担,与本文作者无关
欢迎讨论,持续更新中,感谢关注!

SQL注入是一种常见的黑客攻击手法,通过在输入参数中插入恶意SQL语句,使数据库执行非预期的操作,从而获取敏感信息或破坏系统。其主要原因是参数过滤不严,如示例PHP代码所示。攻击者可能执行收集信息、重构SQL、猜解表名等操作,导致数据泄露、权限绕过甚至服务器控制。防范措施包括参数化查询、参数过滤和限制查询长度。了解SQL注入对于确保web应用安全至关重要。
1万+

被折叠的 条评论
为什么被折叠?



