Sql注入总结

01
原理用户输入的数据没有被处理或者过滤可以直接被当成sql语句执行。
按注入类型分类
  • 字符型
  • 数字型
按注入方法分类
  • UNION注入(常需要用到order by来确定列数)
  • 报错注入(有报错信息且是来自数据库的,不能是写死的报错信息,通常是因为开发中使用print_r mysql_error()函数使得输出数据库报错信息)—>报错函数:
    1.updatexml(mysql>5.1。当第二个参数出现特殊符号时报错并解析显示第二个参数,通过concat函数将特殊符号与查询语句拼接从而爆出信息,但报错内容限制32个字符,通常使用list来分页和substr来截取字符)如updatexml(1, concat(0x7e,version()), 3)
    2.extractvalue(与updatexml类似,同样在第二个参数出现特殊符号时会报错,利用方法也一样)如extractvalue(1,concat(0x7e,version()))
    3.floor
  • 布尔盲注;
  • 时间盲注(sleep函数);
  • 宽字节注入(使用了gbk编码和addslashes()函数来转义);
  • 堆叠注入(使用了mysqli_multi_query函数进行sql查询可以通过;号同时执行多条语句) ;
  • 二次注入(数据库只对输入使用\来转义但是保存的还是原数据即不会把\保存进去,同时在取出数据时未进行检查和处理于是造成取出数据时的sql注入)
防御
  • 预编译(即先对sql语句进行预编译,那么用户输入的数据就无法进入到语法分析阶段,而只能作为字符串成为参数。)
  • 对用户输入参数进行过滤编码转义。
  • 加waf。
绕waf
  • 寻找真实IP–(用户本身是进入waf后访问web页面的,只要我们找到web的真实IP,绕过waf就不在话下了。)
  • 通过找ssrf漏洞–(我们可以利用已知服务器存在的ssrf漏洞,将数据直接发送给同网段的web2进行SQL注入)
  • 资源限制–(发送很大的请求,有些waf只会检测部分大小的内容)
  • 更换协议–(有的waf只过滤GET请求,而对POST请求没做别的限制,因此,可以将GET型换为POST型)
  • 规则绕过:(如大小写,关键字重复,等价函数替换,函数分割如concat,mid,substr,substring,空白符,sql注释符号)
  • 编码绕过–(如union编码为%75nion)
Mysql getshell
  • 联合查询利用outfiel或dumpfile直接写(条件:root权限;能用单引号即php的GPC方法关闭;知道绝对路径且有写的权限;有导入导出权限即secure_file_priv参数不能为NULL或者关闭)
  • 全局日志写shell(条件:root权限;开启了全局日志;知道绝对路径)
  • 慢日志写shell
Mssql getshell
  • 利用xp_cmdshell执行系统
  • 利用sp_oacreate执行系统命
数据库类型关系型:Oracle、Mssql、Mysql。非关系型:MangoDB、redis
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值