首页 > 代码库 > WeChall-PHP

WeChall-PHP

0x01  PHP 0817

 1 <?php 2 if (isset($_GET[‘which‘])) 3 { 4         $which = $_GET[‘which‘]; 5         switch ($which) 6         { 7         case 0: 8         case 1: 9         case 2:10                 require_once $which.‘.php‘;11                 break;12         default:13                 echo GWF_HTML::error(‘PHP-0817‘, ‘Hacker NoNoNo!‘, false);14                 break;15         }16 }17 ?>

在$which变量后面会自动补上".php“,所以只要提交参数solution就可以了。

http://www.wechall.net/challenge/php0817/index.php?which=solution

 

0x02  Training: Register Globals

核心代码:

1 if (isset($login))2 {3         echo GWF_HTML::message(‘Register Globals‘, $chall->lang(‘msg_welcome_back‘, array(htmlspecialchars($login[0]), htmlspecialchars($login[1]))));4         if (strtolower($login[0]) === ‘admin‘) {5                 $chall->onChallengeSolved(GWF_Session::getUserID());6         }7 }

如果开启了register globals的话,则可以在url上输入login[0]=admin来绕过前面的逻辑判断。可以给login[0]赋初值false让代码更安全。

 

0x03  Training: PHP LFI

1 $filename = ‘pages/‘.(isset($_GET["file"])?$_GET["file"]:"welcome").‘.html‘;

这里会默认在$file的前面和后面分别加上pages和.html。所以这样构造url,“../”跨目录,%00截断。

http://www.wechall.net/challenge/training/php/lfi/up/index.php?file=../../solution.php%00

 

0x04  PHP 0818

 1 function noother_says_correct($number) 2 { 3         $one = ord(‘1‘); 4         $nine = ord(‘9‘); 5         # Check all the input characters! 6         for ($i = 0; $i < strlen($number); $i++) 7         {  8                 # Disallow all the digits! 9                 $digit = ord($number{$i});10                 if ( ($digit >= $one) && ($digit <= $nine) )11                 {12                         # Aha, digit not allowed!13                         return false;14                 }15         }16         17         # Allow the magic number ...18         return $number == "3735929054";19 }

这个题目要求输入的$number要和3735929054相等,从上面的代码可以看出,输入的$number之中不能包含1-9之间的数字。在php中,数字型字符串在进行比较的时候会直接转换成数值来进行比较,所以就可以输入3735929054的hex值来bypass。这里要更安全更快的话,在return那里应该使用" === "。

 

WeChall-PHP