SQL注入攻击原理及基本方法

2023-10-06 18:56

1. SQL注入概述

定义:SQL注入是指Web应用程序不判断用户输入数据的合法性。攻击者可以在 Web 应用程序中预定义查询语句的末尾添加额外的 SQL 语句来实现此目的。欺骗数据库服务器进行未经授权的任意查询,从而进一步获取相应的数据信息。

为了让大家更直观的了解SQL注入原理,贴一张SQL注入攻击原理图

●SQL注入威胁可以体现在以下几点:

                                ●绕过认证获取非法权限

    ●猜出后台数据库中的所有信息

                                                                                                                                                                                                                                     ●注射可使用数据库的存储过程,用于执行权限提升等操作

●SQL注入攻击的典型手段

    ●收集信息并确定数据库类型

                                            ●根据注入的参数类型重构SQL语句原本的样子

    ●猜猜表名和字段名

                ●获取帐户信息,攻击网络或为下一次攻击做好准备

2。 SQL注入的简单示例

1。判断SQL注入漏洞的几种方法

①http://m.genealogy-computer-tips.com/showtail.asp?id=40'

②http://m.genealogy-computer-tips.com/showtail.asp?id=40 和 1=1

③http://m.genealogy-computer-tips.com/showtail.asp?id=40 和 1=2

如果执行①后,页面提示错误或数据库错误,则说明存在注入漏洞。

如果执行②后页面显示正常,但执行③后出现错误,则说明该页面存在注入漏洞。

2。收集信息并确定数据库类型

信息 从返回的信息中可以判断数据库的类型。更有可能知道一些数据库中的字段以及其他有用的信息,为下次攻击提供了缓冲。

3。根据注入的参数类型重构原来的SQL语句

①ID=40 这种注入的参数是数值型的,所以原来的SQL语句大致为: Select*from 表名 where field=40

②name=movie 该类型注入的参数为字符类型。原SQL语句大致为: Select*from 表名 where field=‘movie’



4。猜测表名和字段名(直接在URL中添加SQL语句)

①并且存在(从表名中选择*)

如果页面没有任何变化,则说明附加条件成立,则说明猜测的表名是正确的。否则说明该表不存在。然后继续猜,直到知道正确为止

②并且存在(从表名中选择字段)

方法原理与理相同

猜测字段内容(用上面猜测的表名和字段名,方法老了,麻烦)

    ●猜猜字段内容的长度

(从表名中选择前1个len(字段名))>0 直到猜测>n不成立,字段长度为:n+1。

   ●拿到长度后猜猜具体内容

(从表名中选择前1个asc(mid(用户名,1,1))>0直到>m不成立,即可猜出ASCII码值。



注意:我是学习 SQL 注入的新手。如果有错误的地方,请指出并改正。谢谢你! ! !