来源:未知 时间:2015-04-15 13:08 作者:xxadmin 阅读:次
[导读] 序 这里必须得说一下==和===这俩货的重要性。==是比较运算,它不会去检查条件式的表达式的类型===是恒等,它会检查查表达式的值与类型是否相等NULL,0,0,array()使用==和false比较时,都是...
序 if (isset($_GET['password'])) { if ($_GET['password']) print 'Your password can not be your name.'; else if (sha1($_GET['password'])) die('Flag: '.$flag); else print 'Invalid password'; } 这道题,我们首先要确保name和password的值不能相同,其次,sha1加密之后的name和password的值又必须完全相同 我们知道,这时的a[0] = 1;所以name[] = 1和password[]= 2相比较,可以跳过第一个判断,而如果使用sha1对一个数组进行加密,返回的将是NULL,NULL===NULL,这是成立的,所以构造两个数组,成功拿到flag if (isset($_GET['password'], flag); else print 'Invalid password'; }
if (isset ($_GET['password'])) { if (ereg ("^[a-zA-Z0-9]+$_GET['password']) === FALSE) echo 'You password must be alphanumeric'; else if (strpos ($_GET['password'], '--') !== FALSE) die('Flag: ' . $flag); else echo 'Invalid password'; }
function noother_says_correct(one = ord('1'); $nine = ord('9'); // Check all the input characters! for (i < strlen(i++) { // Disallow all the digits! number{digit >= digit <= $nine) ) { // Aha, digit not allowed! return false; } } return $number == "3735929054"; }
_SERVER['REQUEST_METHOD']) { _POST['password']; if (0 >= preg_match('/^[[:graph:]]{12,}password)) { echo 'Wrong Format'; exit; } while (TRUE) { $reg = '/([[:punct:]]+|[[:digit:]]+|[[:upper:]]+|[[:lower:]]+)/'; if (6 > preg_match_all(password, c = 0; $ps = array('punct', 'digit', 'upper', 'lower'); foreach (pt) { if (preg_match("/[[:password)) c if ("42" == flag; else echo 'Wrong password'; exit; } }在乌云zone上,X总已经对其进行分析了 传送门,这块是数学的东西了。。 42.00e+0000000000,10的00000次方。。等于42.000000…. 结果其实就是42,不过有时候这些东西也会出奇迹的是不是。。 switch没有break 在wechall上有一道题: if (isset(which = which) { case 0: case 1: case 2: require_once $which.'.php'; break; default: echo GWF_HTML::error('PHP-0817', 'Hacker NoNoNo!', false); break; } } 让我们包含当前目录中的solution文件,这里会发现在case 0和case 1的时候,没有break,按照常规思维,应该是0比较不成功,进入比较1,然后比较2,再然后进入default,但是事实却不是这样,事实上,在case 0的时候,进入了case 0的方法体,但是却没有break,这个时候,默认判断已经比较成功了,而如果匹配成功之后,会继续执行后面的语句,这个时候,是不会再继续进行任何判断的。也就是说,我们which传入solution的时候,case 0比较进入了方法体,但是没有break,默认已经匹配成功,往下执行不再判断,进入2的时候,执行了require_once solution.php,查阅资料之后发现, 这个黑魔法是继承于C语言,paper传送阵:传送阵 小结 至此,就我自己遇到过的很有意思的php黑魔法就这么点了,若大家有其他猥琐的trick或者屌炸天的黑魔法,大家一起交流交流咯,无形装逼,最为致命,摸摸大。 |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com