Sql 注入是指攻击是通过将恶意的 Sql 语句插入到应用的输入参数中,让后台 Sql 服务器上解析执行进行的攻击,是目前黑客对数据库进行攻击的最常用手段之一
通俗来理解就是攻击者可以在web应用程序中事先定义好的查询语句中添加额外的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 控制服务器
校验和过滤参数
程序编写是要参数化语句
限制查询长度和类型
注意:本文仅供学习参考,非法传播及使用产生的后果自行承担,与本文作者无关
欢迎讨论,持续更新中,感谢关注!
「内容编写不易,如果觉得我们的文章对您有用,请收藏本站,共同学习成长」
上一篇:没有了,已经是最后文章
下一篇:关不掉的表白情话弹窗脚本
共 0 条评论关于"SQL注入概述和基本原理-SQL注入原因"
最新评论