CTF-PHP代码审计学习笔记分享

本文详细介绍了PHP中的命令执行函数,如system、exec、passthru等,以及如何通过各种方式绕过限制,如拼接、内联执行和长度限制。同时,文章总结了PHP常见函数的漏洞,如匿名函数、可变函数和回调函数的安全问题,并提到了全局变量导入、preg_replace的/E修饰符可能导致的代码注入。此外,讨论了PHP的文件包含、弱类型、溢出漏洞、跨行匹配、open_basedir限制的绕过方法,以及正则回溯和序列化反序列化的安全性。

(一)PHP命令执行:

1.string system

string system (string command,int &return_var)可以用来执行系统命令并将相应的执行结果输出

2. string exec

string exec(string command,array &outpub,int &return_var)

command是要执行的命令,output是获得执行命令输出的每一行字符串,return_var存放执行命令后的状态值。exec输出的是命令执行结果的最后一行内容。如果你需要获取未经处理的全部输出数据,请使用passthru()函数。

3. passthru

void passthru(string command, int &return_var)

command是要执行的命令,return_var存放执行命令后的状态值。

4.string shell_exec

string shell_exec (string command)command是要执行的命令。

5.反引号运算符

反引号运算符与shell_exec功能相同,执行shell命令并返回输出的字符串。

6.一些命令分隔符

linux中:%0a 、%0d 、; 、& 、| 、&&、||
windows中:%0a、&、|、%1a(一个神奇的角色,作为.bat文件中的命令分隔符)。

空格被过滤:

< 、<>、%20(space)、%09(tab)、$IFS$9、 ${IFS}、$IFS等

7.花括号的别样用法:

在Linux bash中还可以使用{OS_COMMAND,ARGUMENT}执行系统命令

8.拼接绕过:
比如:a=l;b=s;$a$b,a=fl;b=ag;cat $a$b,即cat flag,长用于绕过黑名单检测。也可用编码的方式

9.内联执行

内联,就是将反引号内命令的输出作为输入执行,类似的还有$(command)

10.长度限制:

长度限制可以用文件构造

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值