PHP弱类型到数字到字符 taro Posted on Mar 17 2021 PHP 代码审计 php中存在弱类型,本质是当把不同类型的数据做处理的时候会发生强制类型转换, 我们可以利用这个特性,构造一些奇妙的用法 # 数字 ```php ('>'>'<')+('>'>'<')==2 ``` `>`在和`<`比较的时候会进行强制类型转换,`('>'>'<')`结果成为 `True`,在两个`True`相加的时候会强制类型转换为1,就成了1+1, 所以结果为2 # 字符 字符串还可以用!操作符来进行布尔类型的转换,以下为例 ```php php > var_dump(!@a); bool(false) php > var_dump(!!@a); bool(true) ``` 这样我们又获得了0,1两个数字,可以通过`chr()`和`trim`转换为字符 我们要构造`a`这个字符串, ascll码为97,我们用`4*4*3*2+1=91`来构造 ```php php > $_=!!a; php > echo $_; 1 php > echo $_+$_; 2 php > echo ($_+$_+$_+$_)*($_+$_+$_+$_)*($_+$_+$_)*($_+$_)+$_; 97 php > echo chr(($_+$_+$_+$_)*($_+$_+$_+$_)*($_+$_+$_)*($_+$_)+$_); a ``` 以此类推,获取其他字符 代码注入绕过手札 子域名收集工具