2022/5/8 安全周报
完成事项
一:项目一
thinkphp框架学习
开发命名规范
命名空间
必须用关键字namespace来做声明,后面加上命名空间的名字。这个关键字一行必须写在一个php文件的最开头,前面不能有任何的语句,额,这一点是有点变态哈,但是也还能忍受。所以,包括ehco 222;, $info = array() 等这一系列的语句的都不能写在namespace前面。不然就会报致命错误:
// 是不是有毛病,不能理解原因,还是c++好。
上面的几个例子中,我们取的命名空间的name 叫 Foo和Fee ,当然这只是一个例子,我们在取名字的时候必须得是有意义的。按照PSR-0的规范要求呢,这个名字必须得有一个上级的Vendor Name,可以理解为你的项目文件夹的名字,这样的目的呢,第一是为了防止namespace的name 也重复,第二是为了更好的定位文件的位置。也许有点看不懂,举个例子:
假如gender.php 和 name.php 文件中的class name 都取名为:info , 那么必须要设置2级的namespace
namespace的名字叫App\Foo 和 App\Fee, App就是Vendor name 也就是项目的目录。这样就很好的区分了。
如果,name.php 和 gender.php 中的class name 不一样,也就不会重复了,理论上可以不用命名空间,但是现在用命名空间不仅仅是为了防止重复,现在同样也是为了定位这个文件的目录,为了好快速找到。所以,就只需一层Vendor name 就可以了
上面的我们都将它们命名空间为APP,因为它们的class name不一样,所以组成的访问类的方式:APP\gender::get_info(); 和App\name::get_info(); 也就不一样。也就不存在重复的关系。我们在下面将如何访问一个namespace时会继续讲到。
name命名规范 和php中变量的命名规则一样,什么首字母不能是数字啊。只能有数字,字母,下划线_组成,也不能是系统保留关键字等。(\这个符号可以用的,因为是在namespace中用来分割目录的)
所以总结下: 如果我们用namespace声明 function 文件时,最好直接使用use关键字,必须要用太有毛病了,完全无法理解,那要use干嘛,这还分情况,有毛病。
参考文章:https://blog.csdn.net/luosisan/article/details/53006240
总结:使用\确实可以清楚的看清目录结构,但是一些额外的处理想不出为什么要这要做。
感觉挺关键的一部分 url的结构
目录结构
目前学习的内容,主要是熟悉目录的结构,了解他的运行规则,以及数据库的一些查询
ctfshow570
给了源码
在Application\Common\Conf\config.php
直接调用了函数,结合thinkphp3的闭包路由规则,可以简单构造payload
参考文章:https://www.kancloud.cn/manual/thinkphp/1710
这里有两个assert盲猜是路由会把后面的参数当作字符串
二:项目二
挖漏洞心得
成功没挖到漏洞,小自闭了一会,还是打算从框架入手。
虽然没挖到,但是见到了很多防守的策略,也积攒了一些小心得,还不完善,就不发了。
因为大多数时间都放在挖漏洞上了,又没挖到,所以本周内容较少。
未完成事项及原因
暂无
如何去解决未完成的事情
上星期打算用的todo软件找到了,效果还不错。
下周计划待做事项(可灵活变动)
- php代码审计
- 学习java
疑问点
挖了一圈漏洞,漏洞没挖到,倒是看到了一堆我暂时解不出来的安全策略,比如用session维持会话,不使用明文id;登录使用时间参数,登录会话会过期;采用vpn隧道策略;其实只要他加密我感觉自己就没什么办法了。