资料参考:
开放式 Web 应用程序
php安全
继续阅读 »
PHP7
PHP7都出了,自然我是要安装的,上次写的那个编译开发环境并没有针对性的说PHP,就这次说清楚吧。
Download
$ wget http://cn2.php.net/get/php-7.0.0.tar.gz/from/this/mirror
$ mv mirror php7.tar.gz
继续阅读 »
思路来自爱春秋文章python之提速千倍爆破一句话 ,据说源头是吐司文章《让你的一句话爆破速度提升千倍》。
速度提升的关键在于一次尝试提交多个可能的密码,实测在Apache+PHP下使用POST方式请求可高达四千万条密码每次(耗时约20秒,GET方式请求只能达到两百条左右),效果可以说非常惊人,如果有一个足够好的字典,那将无往不利。
思路举例
php
慢速:
http://127.0.0.1/xiao.php?pass=echo(%22pwd:pass%22);
快速:
http://127.0.0.1/xiao.php?pass=echo(%22pwd:pass%22);&findneo=echo(%22pwd:findn
继续阅读 »
非xss题 但是欢迎留言~
地址:get the flag
读取源码
在页面底部发现一个这样的链接:http://cms.nuptzj.cn/about.php?file=sm.txt ,说明题目提供了读取文件功能,如果使用 file://协议 读取,HTML预留字符会以字符实体显示,看起来不方便,所以也可以编码读取后再本地解码。
```php
http://cms.nuptzj.cn/about.php?file=php://filter/convert.base64-encode/resource=filename
在拿到的文件里搜索 ".php" ,顺藤摸瓜,能找到并读取到的文件有:
sm.txt
about.p
继续阅读 »
Introduction
在[PHP设计模式(四):继承][2]中我们介绍了继承,利用extends来进行程序设计的方法。
在[PHP设计模式(二):抽象类和接口][3]中我们介绍了接口,事实上也存在利用interface的程序设计方法,那就是多态。
和C/C++,Java,Python等语言一样,PHP也支持多态。多态更多是是一种面向对象程序设计的概念,让同一类对象执行同一个接口,但却实现不同的逻辑功能
。
多态/Polymorphism
还是用动物、鲸鱼和鲤鱼来举例:
interface IEat {
function eatFish();
function eatMoss();
}
class Wha
继续阅读 »
简介
在[PHP设计模式(二):抽象类和接口][2]以及[PHP设计模式(三):封装][3]中,我们已经见过继承,也就是extends关键字。
和C/C++,Java,Python等语言一样,PHP也支持继承,而且和其他语言没有什么区别。
继承/Inheritance
还是用动物、鲸鱼和鲤鱼来举例:
abstract class Animal {
protected $name;
protected function chew($food) {
echo $this-name . " is chewing " . $food . ".\n";
}
protected function diges
继续阅读 »
原文地址:[PHP设计模式(六):MVC][1]
Introduction
20世纪80年代,计算机发展迅速,编程技术也日益分化。桌面应用编程,也逐渐出现了用户图形界面和程序逻辑分离的程序设计。到了90年代,web的出现更是让这种程序设计模式得以延续。
这种设计模式便是MVC(Model-View-Control),除了MVC,还有MVC的变种,如MVVM(Model-View-View-Model)等。
MVC
回到80年代的桌面应用编程,当时面向对象的编程设计模式(见PHP设计模式(一):基础编程模式)兴起,程序员将桌面应用分割成两个大的对象:领域对象(domain objects)和可视对象(presentatio
继续阅读 »
简介
对于编程来说,对事物的抽象是一个老生常谈的话题,抽象问题更利于面向对象编程以及程序设计模式。
和C/C++,Java,Python等语言一样,PHP也支持面向对象,但是又有略微区别,如PHP支持在接口中定义常量,但是不支持抽象变量。
抽象/Abstraction
对事物的抽象是指,区别两个不同事物之间的本质特征,这两个事物应该在某个视角上有明确的区分界限。
如,鲸鱼和鲤鱼,这两个事物在动物的视角上,有明确的区分界限,属于不同的动物;但是在水生动物的视角上,他们属于同一种动物的抽象。
合理的对问题进行抽象,构造模型,将更容易通过编程来解决问题。
记住:抽象是编程解决问题的基础,越复杂的问题,越需要一开始就对问
继续阅读 »
原文地址:[PHP设计模式(三):封装][1]
简介
面向对象编程中,一切都是对象,对一个对象的封装,也成了面向对象编程中必不可少的部分。
和C/C++,Java,Python等语言一样,PHP也支持封装。
封装/Encapsulation
对事物的封装是指,将事物进行抽象后,提供抽象概念的实现的具体方法。
听起来很拗口,还是举鲸鱼的例子。
对于鲸鱼来说,需要吃东西这个行为,吃本身是一个抽象的概念,因为具体到怎么吃,是咀嚼和消化的过程,甚至如何咀嚼和消化也是不可见的。对外部而言,可见的只是吃这一个接口,如何吃、怎么吃,是被封装在了鲸鱼的实现中。甚至可以说,消化系统,被封装到了鲸鱼这个对象中,对外部不可见,仅仅鲸鱼自
继续阅读 »
简介
在[PHP设计模式(八):工厂模式][2]中我们介绍了创建设计模式(Creation
patterns)中的工厂模式,下面我们将介绍另一种原型设计模式(Prototype Method)。
在PHP中,原型设计模式依靠cloning复制对象来实现。通过cloning构造的对象,将大量节省新对象的构造时间。
何时使用原型设计模式?
简单来说,当你希望根据已有的对象来创建新对象时。
为什么会有这种需求?想象一下,你在做细胞分裂的项目,每一个细胞都是一个对象,现在你有一个细胞类,每一个新的细胞都是由这个类生成的,不同的细胞只是内部的状态参数不同。
当分裂到第N代的时候,已经和初代大不一样了,你是愿意使用第N代的副本
继续阅读 »