杂七杂八

配置文件位置

常用于查看路由转发,可能把flag藏到哪个路径

nginx

1
2
/usr/local/nginx/conf/nginx.conf
/etc/nginx/nginx.conf

apache

1
/etc/httpd/conf/httpd.conf

日志文件位置

可以用于日志包含拿shell

nginx

1
/var/log/nginx/access.log

apache

1
2
3
/var/log/apache/access.log
/var/log/apache2/access.log
/var/log/httpd/access.log

iis日志文件:

1
%systemroot%\system32\logfiles\

查看文件内容

1
2
3
4
5
Linux:cat、tac、more、less、head、tail、nl、sed、sort、uniq、rev

PHP:file_get_content()、show_source()、include()、highlight_file()
假如在执行命令时冒号:和括号被禁
就需要使用一些无需括号的php语言结构,如:echo、print、isset、unset、include、require

Linux下的一些特性

一些符号

1
2
3
4
5
6
7
8
9
10
11
12
*           # 通配符,匹配任意字符
? # 占位符,匹配任意一个字符
作用类似正则 (可绕过文件名过滤,如:tac *、?at flag.php)
%0a(换行符)
$ # 变量调用符号
| # 第一条命令结果作为第二条命令的输入
|| # 第一条执行失败,执行第二条命令
; # 连续指令功能。
& # 连接的两条命令都会执行
&& # 当第一条执行成功后执行后续命令
> # 重定向输出符号(覆盖)
>> # 重定向输出符号(追加)

Linux下的引号

linux中的单引号、双引号和反引号的特性

单引号:会将其中内容都当做字符串,忽略所有命令和特殊字符

双引号:会解析其中的特殊字符和变量,如果要原样输出特殊字符需要用\转义

反引号:会将反引号中的字符串当作命令执行,反引号类似$(command)

shell中有两种方法作命令替换:把shell命令用反引号或者$(…)结构括起来,其中,$(…)格式受到POSIX标准支持,也利于嵌套。

反斜杠:

反斜杠一般用作转义字符,或称逃脱字符,
Linux如果echo要让转义字符发生作用,就要使用-e选项,
且转义字符要使用双引号echo -e “\n”
反斜杠的另一种作用,就是当反斜杠用于一行的最后一个字符时,
Shell把行尾的反斜杠作为续行,这种结构在分几行输入长命令时经常使用。

linux shell中的特殊符号

$()和 `` :命令替换

  • `` 基本可在所以unix shell中使用,而 $() 不是所有shell都支持

${}:变量替换

$var${var}效果类似,但 ${ } 能更精确的界定变量名称的范围

如下,使用echo $ab想要输出的是$a的内容+字符b,但是会被解析成$ab

一些更深入的用法:https://blog.csdn.net/x1269778817/article/details/46535729

$?

$?表示上一条命令执行结束后的传回值。

  • 通常0代表执行成功
  • 非0代表执行有误

$IFS

$IFS - Linux Shell Scripting Wiki (cyberciti.biz)

Shell中的IFS解惑_Simple life-CSDN博客

简而言之,$IFS的默认值是 space, tab, newline

>/dev/null

/dev/null代表linux的空设备文件,所有往这个文件里面写入的内容都会丢失

在执行了>/dev/null后,标准输出就会不再存在, 没有任何地方能够找到输出的内容。