php短标签绕过
在easyupload中,我们使用常见的<?php @eval($_POST['pass']);?>
并不能上传成功,这时我们需要绕过。
php中的特殊标签
1 |
|
PHP
特殊的md5值
在easyphp中需要我们满足条件
1 | '8b184b' === substr(md5($b),-6,6)) |
也就是最后6个字符是8b184b的md5值,这里用python脚本暴力破解。
1 | import hashlib# 用于计算 MD5 哈希 |
运行得到Found: ‘bDIOS’ -> 9126f37d5c0f9f7473fedf0f0e8b184b
科学计数法绕过
1 | intval($a) > 6000000 && strlen($a) <= 3 |
遇到这种既要大于600000又要字符串长度小于3的,我们可以使用科学计数法如7e6就是7*10^6。
松散比较
在做eazyphp时候遇到没开启严格比较的array_search遂可以利用它松散比较的特性。
1 | $d = array_search("DGGJ", $c["n"]); |
这里用array_search搜索”DGGJ”,但后来又不能有”DGGJ”,可以利用== 的若比较,若把整数与字符串比较,那么字符串就会优先转化成整数,这里是0=="DGGJ",那DGGJ被转化成整数就是0。
其他类型的比较规则如下
对于多种类型,比较运算符根据下表比较(按顺序)。
| 运算数1 类型 | 运算数2 类型 | 结果 |
|---|---|---|
| null 或 string | string | 将 NULL 转换为 “”,进行数字或词汇比较 |
| bool 或 null | 任何其它类型 | 转换为 bool,FALSE < TRUE |
| object | object | 内置类可以定义自己的比较,不同类不能比较,相同类和数组同样方式比较属性(PHP 4 中),PHP 5 有其自己的说明 |
| string,resource 或 number | string,resource 或 number | 将字符串和资源转换成数字,按普通数学比较 |
| array | array | 具有较少成员的数组较小,如果运算数 1 中的键不存在于运算数 2 中则数组无法比较,否则挨个值比较(见下例) |
| object | 任何其它类型 | object 总是更大 |
| array | 任何其它类型 | array 总是更大 |
preg_replace命令执行
1 | preg_replace原型: |
pattern: 要搜索的模式,可以是字符串或一个字符串数组。
replacement: 用于替换的字符串或字符串数组。
subject: 要搜索替换的目标字符串或字符串数组。
preg_replace函数作用:搜索subject中匹配pattern的部分, 以replacement进行替换。
/e 修正符使 preg_replace() 将 replacement 参数当作 PHP 代码(在适当的逆向引用替换完之后)。提示:要确保 replacement 构成一个合法的 PHP 代码字符串,否则 PHP 会在报告在包含 preg_replace() 的行中出现语法解析错误。