PHP代码审计———13、PHP代码审计之注入

无过滤

把用户可控的一些变量带入到了数据库的各种操作当中,并且没有做好过滤

  • 注册用户的使用检测用户名是否存在的时候
  • 在写SQL语句的时候,是拼接sql

Select注入

一般使用union select

Update注入

  • update set的位置:看这个表的那个column会被展示出来,就把查询出来的内容显示到这里
  • where之后: 盲注

Insert注入

把要出的数据插入到这column里面去

Delete注入

盲注

数字型注入

  • 变量并没有用单引号引住,不需要用单引号区分数据与sql命令,这样就会让一般的gpc等机制无用,因为不含特殊字符
  • 强制类型转换intval

字符型、搜索型

全局变量没有做addslashes——在查询的时候再对一些用户可控的变量进行addslashes,遗漏了addslashes

全局做addslashes——在全局文件中对GET\POST\COOKIE做addslashes:

  • 首先get magic quotes gpc判断gpc是否开启
  • 如果没有开启,再调用addslashes来转义
  • 如果开启,就不用来addslashes,没开启就addslashes

Magic_quotes_gpc在稍微高点的版本默认都是on,5.4已经删除了——'  "  \ NULL会在前面加上一个转义字符

宽字节注入

数据库字符集GBK的宽字节注入:

  • 数据库的链接方式不同<数据库与PHP编码不一致,转换过程中可能存在
  • 错误方法:set names gbk

转换字符集造成的宽字节注入:

  • 从GBK到utf-8
  • 从utf-8到GBK

解码导致

  • 先提交encode的,那么就不被转义,decode后,再带入查询,造成了注入,无视gpc
  • urldecode
  • base64_decode
  • XML

变量覆盖

变量覆盖有extract、parse_str、$$

在之前的变量覆盖中有详细的介绍

防御

  • 开启gpc
  • mysql_real_escape_string
  • addslashes
  • 关键字过滤
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值