由于之前的学习不是非常的系统,故此重新整理学习“代码审计”,博客也更新相关内容。
0x01:调试函数
echo (print): 这是最简单的输出数据调试方法,一般用来输出变量值,或者你不确定程序执行 到了哪个分支的情况下是用。
print_r、var_dump(var_export)、debug_zval_dump 这个主要是用来输出变量数据值,特别是数组和对象数据,一般我们在查看接口 返回值,或者某些不太确定变量的时候,都可以使用这两个 API。
var_dump 会额外输出数据类型: print_r 输出:格式很整齐,跟 var_dump 的区别是没有类型数据,并且布尔值 的 false 和值 NULL 输出为空 var_export 输出,所有的数据是可以作为组织好的变量输出的,都是能够作为 直接赋值使用: 需要注意的一点是, var_export 对于资源型的变量会输出 NULL debug_zval_dump 输出结果跟 var_dump 类似,唯一增加的一个值是 refcount, 就是记录一个变量被引用了多少次,这是 php 的 copy on write (写时复制) 的 机制的一个重要特点。
exit()退出函数
0x02:注释
// 这是单行注释
/* 这个是多行注释 */
0x03: 单引号跟双引号的区别
双引号解析变量 单引号不解析变量
0x04:超全局变量
超全局变量 — 超全局变量是在全部作用域中始终可用的内置变量
在 php 中可由用户操作的全局变量列表如下:
$GLOBALS — 引用全局作用域中可用的全部变量
$_SERVER — 服务器和执行环境信息
$_GET — HTTPGET 变量
$_POST — HTTPPOST 变量
$_FILES — HTTP 文件上传变量
$_REQUEST — HTTPRequest 变量
$_SESSION — Session 变量
$_ENV — 环境变量
$_COOKIE — HTTPCookies
0x05:命令注入
攻击:
PHP 执行系统命令可以使用以下几个函数:
Linux Unix Windos
system、exec、passthru、 ``(反引号)、shell_exec、popen、proc_open、pcntl_exec
语法:
String system (string$command[,int&$return_var