sql注入工作原理,sql注入的基础,简单聊聊SQL注入的原理以及一般步骤

sql注入工作原理,sql注入的基础,简单聊聊SQL注入的原理以及一般步骤

所谓SQL注入攻击,是指攻击者将SQL命令插入Web表单的输入字段或页面请求的查询字符串中,欺骗服务器执行恶意的SQL命令。下面这篇文章主要为大家介绍SQL注入的原理和一般步骤,有需要的朋友可以参考一下。

目录

原则一般用步骤1。确定注入点2。确定查询字段的数量3。检查数据库名称、版本号、用户名等信息4。查询表名5。查询字段名6。查询记录内容摘要。

原理

SQL注入是一种攻击模式,将恶意代码插入字符串,然后将字符串传递给SQL Server的实例进行分析和执行。应该对构成SQL语句的任何进程进行注入检查,因为SQL Server将执行它收到的所有语法上有效的查询。

(摘自微软SQL注入,但需要注意的是,SQL注入并不局限于SQL Server,几乎任何数据库引擎都有这个问题)

一般利用步骤

1.判断注入点

判断注射点有很多意义,一是找到可能存在注射的位置,二是判断那里是否可以进行注射。在靶场环境中,我们已经知道GET的参数id是它与数据库交互的点,然后就可以判断它是否可以被注入。

Id为1,查询成功,回显正常

Id为1 ,数据库报错,根据错误信息猜测关闭方式为单引号。

Id为1-,查询成功,正常回显,确认猜测,

id分别是1 和1=1-以及1 1 和1=2 -。通过呼应情况,可以进一步判断是否可以进行注射。

1=1永远为真,当1查询成功时,如果1=1也查询成功,页面将返回正常,1=2永远为假,所以如果执行1=2,页面将返回异常。通过比较两种方法返回的结果,可以知道是否可以通过改变点来进行注射。

2.判断查询字段数

为了在页面上显示期望的结果,我们需要使用联合查询。联合查询的条件之一是保证查询语句前后的字段个数相等,所以我们需要判断查询中的字段个数。

通常,采用order by或union select,如下所示:

当订单数大于3时,页面异常返回;当它小于或等于3时,它返回正常,知道原始查询语句中的字段数是3。或者

当我们联合查询4列时,我们得到的错误是查询语句由不同的列组成。当查询3列时:

查询成功,原始查询语句只有三列。

3.查数据库名、版本号、用户名等信息

联合查询的规则是在前一个查询失败时执行第二个查询。我们知道该查询有三个字段。接下来,传入id为0,并且判断三个场的回声位置。

然后通过数据库中内置的version()、database()和user()可以找到版本号、当前数据库名称和当前用户。

4.查询表名

根据前面的查询,目前的数据库版本是5.5.53,MySQL5.5以后的所有版本都内置了数据库information_schema,它存储了数据库中所有的表名、字段名等信息。以便您可以构造一个查询语句并获得表名。

有效载荷:id=0 union select 1,(select group _ concat(table _ name)from information _ schema . tables其中table_schema=database()),3 -

这里group_concat()是SQL语句内置的聚合函数,用来将查询结果以字符串的形式输出。

(使用有效载荷:id=0 union select 1,(select group _ concat(schema _ name from information _ schema . schemata),3 -)

5.查询字段名

知道了所有的表名,选择一个表并查询所有的字段名。

有效载荷:id=0 union select 1,(select group _ concat(column _ name)from information _ schema . columns where table _ name= users ),3 -

6.查询记录内容

通过表名和字段名,您可以展开数据库中的记录。

有效载荷:id=0 union select 1,group_concat(用户名),group_concat(密码)from users -

以上是SQL注入的一般流程,当然还有一些手势如错误注入、请求头注入、选择入outfile编写木马等。在后续的学习过程中逐步补充。

总结

这篇关于SQL注入的原理和一般步骤的文章到此为止。关于SQL注入的原理和步骤的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望你以后能支持我们!

sql注入工作原理,sql注入的基础,简单聊聊SQL注入的原理以及一般步骤