小标
2018-07-04
来源 :
阅读 1525
评论 0
摘要:本文主要向大家介绍了关于PHP语言无字母代码的研究,通过具体的实例向大家展示,希望对大家学习php语言有所帮助。
本文主要向大家介绍了关于PHP语言无字母代码的研究,通过具体的实例向大家展示,希望对大家学习php语言有所帮助。
什么是无字母代码,也就是代码中不出现任何的数字或者字母.而是通过用一些特殊的方法构造出字母.这个在javascript里面经常看到.PHP 也可以通过一些hack的方式来实现
首先php 里有一个非常特殊的字符就是 "_" 这个字符在不经过引号的引起来的情况就可以直接输出
例如执行
<?phpecho _;?>
你会得到 _ 这个字符的输出。而其他的特殊字符则不可以.
好了开始转变思路.众所周知php是弱类型语言,字符串是可以直接和数字进行运算的. 那么 _ 这个字符应该也同样可以
尝试如下代码:
<?phpecho +_;?>
会看到输出 的是数字 0.很神奇对吧,其实上面的代码类似 echo 0+_; 字符串 _ 被转成整型来进行计算了.
好了现在数字0已经有了. 那么1 怎么获得呢..
那么就要用到取反的符号了 ~ ,尝试执行如下代码
<?phpecho -~+_;?>
可以看到输出是 1 ,原理也比较简单 0 按位取反得到 -1 (注意是二进制的按位取反), - 则是数学意义上的取反,最终得到1
好了现在 1 和 0 我们都有了..可以说这个世界就拥有了一半了.后面的数字就不用再举例了.
即使最简单的 (-~+_)+(-~+_) ...的方式也足够得到其余所有的数字了.
好了下面要解决比较困难的问题,如何获得abcd 这样的字母呢
暂时我只能找到用数组变量转成Array的字符串,然后用数组字符串的形式取出其中的字母
我们先来得到一个数组
$_[]++; 注:php 5.4以前是不支持 $_=[]; 这样的数组定义语法的.所以只能变通一下用 $_[]++ 来得到一个数组。
然后看下面的代码
<?php
$_[]++;echo $_._;?>
你会看到输出 Array_ , 哈哈 ,终于得到我们要的字符串了。
下面思路就比较清晰了,只要取出 这个字符串数组里的字符即可。看代码把
<?php
$_[]++;
$_[]=$_._;echo $_[-~+_][+_];?>
这样就得到 第一个字母 A 了.
其他的字母 想要得到就简单多了
<?php
$_[]++;
$_[]=$_._;
$_=$_[-~+_][+_];echo ++$_;?>
这样就可以得到字母B 了.
好了我们来 尝试执行如下代码:
<?php
$_[]++;
$_[]=$_._;
$_=$_[-~+_][+_];
++$_;++$_;++$_;++$_;$__=++$_;++$_;$___=++$_;++$_;++$_;++$_;++$_;++$_;$____=++$_;$______=$_____=++$_;
$_=++$_____.$___.$_____.++$___.$____.$__.$______;
$_();?>
代码有些丑陋, 但正常执行应该是没有问题的.那么你看出上面的代码执行的是什么内容了吗?
以上就介绍了PHP的相关知识,希望对PHP有兴趣的朋友有所帮助。了解更多内容,请关注职坐标编程语言PHP频道!
喜欢 | 0
不喜欢 | 0
您输入的评论内容中包含违禁敏感词
我知道了

请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号