PHP函数
对于一些题目中遇到的php函数作用的整理,便于之后的代码审计
hash_equals
作用:检查两个字符串是否相等,而不会通过执行时泄露有关 known_string 内容的任何信息。
参数
- known_string:必须保密的已知的string
- user_string:与已知字符串进行比较的用户提供的string
返回值:返回布尔值即当两个参数相等时返回true,否则返回false
1 | |

escapeshellarg
- 功能: 将字符串转义为安全的shell参数
- 特点: 在整个字符串周围添加单引号
将字符串中已有的单引号转义为'\''(先关闭引号,转义单引号,再打开引号)
确保字符串被当作一个整体参数传递
1 | |
escapeshellcmd()
- 功能: 转义shell元字符
- 特点: 转义以下字符:#&;|*?~<>^()[]{}$`、换行符和回车符
不添加引号
主要用于转义整个命令中的特殊字符
escapeshellarg()+escapeshellcmd()漏洞产生
1 | |
Bash解析的行为
- 开头处:’’'‘被解析为字面字符串\
开头的’’是空字符串,\被解释为字面反斜杠,’’也是空字符串
- 中间的 -oG evil.php因 引号被破坏而成为独立参数
- 末尾:最后的’可能被忽略或与后续内容关联
'\\''' 可以拆解为以下部分:'\\' → 单引号包裹的两个反斜杠'' → 空字符串' → 未闭合的单引号(实际会与后续内容关联)