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