PHP构造POP时用到的一些特性
part 1
关于,将一个字符串当成数组取值的问题
场景
- 触发关键节点在
if
判断中 - ……
测试代码
1 |
|
测试结果
这种如果用在框架中,需要php
版本在5.3.29
以下
具体就是phpggc
的monolog
利用链,都用了这个
为什么警告也不行呢?
比如在ThinkPHP
或者Yii
这样的框架中,这种类型的警告会被框架自动抓取,导致程序中断执行
part 2
关于,count
函数的参数的问题
场景
- 先判断,后调用
- ……
测试代码
1 |
|
测试结果
结论
在php7.2.0
之下可用此特性
part 3
关于,array_pop
的参数问题
场景
- 调用
call_user_func
,第二个参数不完全可控,时数组,且需要返回一个数组 - 比如
call_user_func('array_pop',['a','b'])
测试代码
1 |
|
测试结果
结论
在php5.4-7.1
之间可以使用
不然可以用其他的比如array_values
测试代码
1 |
|
测试结果
part 4
关于,缺少调用参数的问题
场景
- 比如之前公开的
Thinkphp3.2.3
的利用链
测试代码
1 |
|
测试结果
结论
没有可以正常执行的,说明一个问题就是之前的Thinkphp
不抓取Warning
无法使用
part 5
关于,参数被定义类型
测试代码
1 |
|
测试结果
结论
全都是error
,无法使用
part 6
关于,调用数组中不存在的键值对
测试代码
1 |
|
测试结果
结论
基本可用
part 7
关于,字符和null
类型的比较
测试代码
1 |
|
测试结果
结论
无警告,可用
part 8
待续……