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注入的原理和步骤的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望你以后能支持我们!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • 使用sql语句实现查询排序,顺序和倒序的区别,sql按倒序排序
  • 使用sql语句实现查询排序,顺序和倒序的区别,sql按倒序排序,使用SQL语句实现查询排序,顺序和倒序
  • 使用php连接mysql数据库,php连接数据库的方法
  • 使用php连接mysql数据库,php连接数据库的方法,一文详解PHP连接MySQL数据库的三种方式
  • 一篇文章带你入门sql编程语句,一篇文章带你入门sql编程题
  • 一篇文章带你入门sql编程语句,一篇文章带你入门sql编程题,一篇文章带你入门SQL编程
  • window无法启动mysql 1067,windows无法启动mysql57服务,错误1053
  • window无法启动mysql 1067,windows无法启动mysql57服务,错误1053,windows无法启动MySQL服务报错1067的解决方法
  • vb中adodb连接数据库,,VB语言使用ADO连接、操作SQLServer数据库教程
  • sql重复记录查询的几种方法有哪些,查询重复记录sql语句
  • sql重复记录查询的几种方法有哪些,查询重复记录sql语句,SQL重复记录查询的几种方法
  • sql语句的各个关键字的解析过程详细总结怎么写,sql语句的各个关键字的解析过程详细总结图
  • sql语句的各个关键字的解析过程详细总结怎么写,sql语句的各个关键字的解析过程详细总结图,SQL语句的各个关键字的解析过程详细总结
  • sql语句游标,sqlserver游标的使用
  • sql语句游标,sqlserver游标的使用,详解SQL游标的用法
  • 留言与评论(共有 条评论)
       
    验证码: