学习sql注入已经有段时间了,大部分仍是mysql的注入。今天作个总结,最近的学习中记录的一些知识也能够帮助一些和我同样的小白。php
首先针对各类注入方法和类型,理解起来很繁琐,容易混乱,下面是个人记忆框架,不是很全面,欢迎大佬指出。mysql
注入类型:sql
(下方为举例,,实际上任何咱们可控,过滤不严且带入数据库执行)数据库
?id=1' 字符型 主要有单引号闭合,双引号闭合,取决与后台语句的书写方法cookie
?id=1 数字型号 大部分不用加闭合,后台是修改语句,而且id在最后一位的个别时可能要闭合一下括号 框架
注入位置:函数
http头注入 在http头的的注入点,常出如今UA,referer,cookiepost
二次注入 特殊字符被过滤后失去做用但保留下来存储到数据库里,再次被调用时未通过过滤使用学习
post注入 表单提交后带入数据库时没有通过过滤编码
注入方式:
联合注入 联合查询注入
报错注入 利用extractvalue,updatexml等语句
布尔型盲注 利用length,substr,ascii进行注入
时间注入 利用if,sleep搭配布尔注入执行,在页面无错误显示,但确实存在注入点时使用
堆叠注入 限制比较多mysql支持,可是须要php函数支持
基础绕过类型:
二次编码注入 后台代码错误的对参数进行了二次url解码时,过滤在第一次时使用致使过滤不彻底并在第二次解码时产生的漏洞
base64编码 后台先过滤再解码产生漏洞
宽字节注入 数据库为gbk编码,利用gbk汉字编码绕过转义符号
相互组合使用,也可能单个出现,以上不是所有但大致的记忆方式是同样的。
waf基础绕过:
/*!*/ 内联注释
/**/注释代替空格
--+dddddd%0a 参数污染,注释后换行
&& 代替and
|| 代替or
以上就是对mysql注入的学习总结,越学习愈加以为闭合才是最关键的地方,多是由于我太菜了吧;