LucyTime

sql注入主要分为普通的sql注入,还有盲注
这一篇主要是记录普通的sql注入
sql注入的主要流程:

1.寻找注入点/判断该表单是否可注入:

主要运用的方法是,构造错误的语句(在正常输入的后面加上如单引号等敏感符号) 如:1’ ,1#等 同时,注入类型分为三类,数字类,字符类,还有如like%%等搜索函数 根据返回的结果进行判断是普通的sql注入还是盲注。

 

2.找到注入点之后,利用order by 猜解字段个数

若为数字类型注入:直接在后面跟上order by 数字即可 若为字符类型注入:须在order by 后加上注释符号# 利用order by 猜解流程,以数字型为例:

假如
数字 order by 1 // 通过
数字 order by 2 // 通过
数字 order by 3 // 通过
数字 order by 4 // 不通过
则该sql语句共查询了3个字段

由此,如果没有过滤掉union,我们就可以利用union来构造sql语句来查询。

 

3. 利用union构造sql语句来获取数据库名

主要函数 database() 还是以上面的为例,假设我们已经确定该sql语句查询了3个字段: 那我们先利用union构造一条select语句确定字段的顺序

1 union select 1,2,3,4
那么字段的顺序 就是查询结果对应后面的顺序.
由此我们知道了字段的查询顺序。
接着,将被显示出来数字对应的字段更改为database()

以2为例
1 union select 1,database(),3,4
那么原来2的地方就会返回当前的数据库的名字。

 

4.通过mysql的information_schema库来查询对应的表名

select 1,table_name,3,4 from information_schema.tables where table_schema=database

 

5通过对应的表名来获取字段名

select 1,column_name from information_schema.columns where table_name = table_name

 

6通过字段和表来获取数据

由此,整个sql注入的流程就结束了

转载请注明来自:LucyTime 原文地址:https://www.cnblogs.com/LucyTime/p/9392649.html

分类:

技术点:

相关文章: