sql注入

本文详细介绍了SQL注入的原理、注入步骤和不同类型的注入攻击,包括联合查询、报错型、时间注入等。还讨论了如何通过特殊技巧绕过过滤,以及常见的防御措施。SQL注入是一种严重的网络安全威胁,攻击者可以通过注入恶意SQL语句获取敏感数据或执行非法操作。
摘要由CSDN通过智能技术生成

SQL注入

SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。

SQL注入步骤

  • SQL注入漏洞要满足两个条件

    • 参数用户可控
    • 参数被带入数据库查询
  • SQL注入有很多种

按数据类型可以分为数字型、字符型和搜索型

按提交方式可分为GET型,POST型,Cookie型和HTTP请求头注入

按执行效果有可以分为报错注入、联合查询注入、时间注入,盲注和堆查询注入

1.寻找注入点,构造特殊的语句

传入SQL语句可控参数分为两类

  • 数字类型,参数不用被引号括起来,如?id=1
  • 其他类型,参数要被引号扩起来,如?name="phone"

2.用户构造SQL语句(如:'or 1=1#;admin'#(这个注入又称PHP的万能密码,是已知用户名的情况下,可绕过输入密码)

之后

  • 将SQL语句发送给DBMS数据库

  • DBMS收到返回的结果,并将该请求解释成机器代码指令,执行必要得到操作

  • DBMS接受返回结果,处理后,返回给用户

因为用户构造了特殊的SQL语句,必定返回特殊的结果(只要你的SQL语句够灵活)

sql常用注入攻击

  • 基于执行效果

联合查询注入攻击

UNION 操作符用于合并两个或多个 SELECT 语句的结果集。

请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。

每条 SELECT 语句中的列的顺序必须相同。

字段查询

union order by <number>

对第几列排序,通过是否报错判断表的列数

回显位查询

union select 1,2,3

使用union联合查询判断显示位。先使union前面的语句为假,这样就只会显示union后面的查询结果

数据库查询

上一步获取了回显位,假如是2,3,利用回显位获取数据

union select 1,database(),version()

输出security,2.33

利用连接函数concat()方便输出

concat(database(),version()),3

表名查询

information_schema记录了所有的表名,看下面关键库了解

由上一步的数据库名查询表

union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security'

结果 emails,referers,uagents,users

查询列

由上一步的表名查询列字段

union select 1,group_concat(column_name),3 from inf

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值