# 安装 composer 安装 ```bash composer create-project topthink/think=5.1.* tp5 ``` # 模块 ## 新建模块 ```bash php think build --module module_name ``` ## 访问模块 ### 未配置路由重写 ``` http://serverName/index.php/模块/控制器
# 规则 默认的路由定义文件是`route.php`,但此目录下所有文件都是有效的 ``` ├─route 路由定义目录 │ ├─route.php 路由定义 │ ├─api.php 路由定义 │ └─... 更多路由定义 ``` 例子: ```php // 注册路由到index模块的Ne
Laravel 的最佳运行环境 -- **Lardock** Laravel 作为目前php主流框架之一,有这肥肠多的安装部署方式,经过多次踩坑,发现laradock是目前踩过的综合开发部署环境最方便的环境。 推荐安装系统:Linux (Deepin大法好) 需要安装的软件: docker,docker-compose ### 安装**docker** https://wiki.deep
# 黑名单绕过 ```php assert,system,passthru,exec,pcntl_exec,shell_exec,popen,proc_open,``(反单引号) ``` 以上函数可以执行命令,尝试黑名单绕过 # LD_PRELOAD > 在 UNIX 的动态链接库的世界中,LD_PRELOAD 是一个有趣的环境变量,它可以影响程序运行时的链接,它允许你定义在程序运行前优先加
# 命名空间概述 参照PHP手册 https://www.php.net/manual/zh/language.namespaces.rationale.php >(PHP 5 >= 5.3.0, PHP 7) 什么是命名空间?从广义上来说,命名空间是一种封装事物的方法。在很多地方都可以见到这种抽象概念。例如,在操作系统中目录用来将相关文件分组,对于目录中的文件来说,它就扮演了命名空间的角色。
命令注入/代码注入绕过是CTF中相当有趣的一个话题,学习了几位师傅的博客,总结一下 # 问题开始 借鉴p神的问题--->`构造不使用数字和字母的webshell` 源码: ```php echo"!"^"@"; a php > echo"a"^"@"; ! php > echo"!"^"a"; @ ``` 可见,`a`这个字符可由`!`和`@`异或获取到 这里需要补充一个定律 > 若存在
php中存在弱类型,本质是当把不同类型的数据做处理的时候会发生强制类型转换, 我们可以利用这个特性,构造一些奇妙的用法 # 数字 ```php ('>'>'<')+('>'>'<')==2 ``` `>`在和`<`比较的时候会进行强制类型转换,`('>'>'<')`结果成为 `True`,在两个`True`相加的时候会强制类型转换为1,就成了1+1, 所以结果为2 # 字符 字符串还可以用!操作符来进行布尔类型的转换,以下为例 ```php php > var_dump(!@a); bool(false) php > var_dump(!!@a); bool(true) ``` 这样我们又获得了0,1两个数字,可以通过`chr()`和`trim`转换为字符 我
# 危险函数 ## 代码执行: - eval - preg_replace+/e - assert - call_user_func - call_user_func_array - create_function ##文件读取: - file_get_contents - highlight_file - fopen - read file - fread - fget
# 变长参数 5.6新引入的特性 **类似于Python中的**kwargs** [PHP官方文档](http://php.net/manual/zh/migration56.new-features.php) > 在之前的 PHP 版本中, 必须使用静态值来定义常量,声明属性以及指定函数参数默认值。 现在你可以使用包括数值、字符串字面量以及其他常量在内的数值表达式来 定义常量、声明属性以及设置
# 开启报错 ```php ini_set("display_errors", "On"); error_reporting(E_ALL | E_STRICT); ```