【无标题】

ctfshow 萌新web10

web12

web 13

ctfhub技能树 web

信息泄露

bak文件

vim缓存

当开发人员在线上环境中使用 vim 编辑器,在使用过程中会留下 vim编辑器缓存,当vim异常退出时,缓存会一直留在服务器上,引起网站源码泄露。vim缓存文件的后缀为.swp,因为文件是隐藏的,所以在前加.。

.DS_Store

.DS_Store 是 Mac OS 保存文件夹的自定义属性的隐藏文件。通过.DS_Store可以知道这个目录里面所有文件的清单。

访问.DS_Store,得到一个文件,在访问文件里的字符串。

PHP

php语法

1. 以<?php开始,?>结束,每行代码以;隔开。注释://或/*....*/

2. echo和print是两个基础输出语言

3. 定义变量$+变量名,变量名必须是字母或者下划线开头,全局变量不能在函数内使用,若要引用,需要使用global关键字,php将所有的全局变量储存在$GLOBALS[index]数组中,可以通过这个数组访问变量,index为变量名。例如$GLOBAL['x']=$GLOBAL['x']+$GLOBAL['y'](x,y为全局变量)。

4. echo可以输出一个或者多个字符串,print只能输出一个字符串,返回值1。

5. php中用var_dump()返回变量的数据类型和值。

6. 数组

array()用于创建数组:$a = array("123","234");

数组有三种类型:数值数组,关联数组,多维数组。

(1)数值数组:

count()函数用于返回数组长度。

(2)关联数组

6. foreach用法:

两种用法:

foreach(array as $value)

foreach(array as $key => $value)

$b = array("li","we","er");
 foreach($b as $value)
    {
        echo $value."<br>";
    }

7. 常量:用define()函数

例:define("as","12",true);

定义了一个as常量,常量的值为12,true表示不区分大小写。echo as输出12

8. strpos()函数:

strpos("hello word","world"); 在前一个字符串中查找后一个字符串,返回后一个字符串出现位置首地址。

9.  intdiv(  , )函数第一个参数除于第二个参数的值并取整(向下取整)

10. 一些运算符

11. 一些排序函数

sort() - 对数组进行升序排列

rsort() - 对数组进行降序排列

asort() - 根据关联数组的值,对数组进行升序排列

ksort() - 根据关联数组的键,对数组进行升序排列

arsort() - 根据关联数组的值,对数组进行降序排列

krsort() - 根据关联数组的键,对数组进行降序排列

12.超级全局变量

13. php函数

function functionname()
{

}

与C语言函数大致类似。

14. 一些常量

_LINE_:表示当前行号

_FILE_:文件的完整路径和文件名。

_DIR_:文件所在的目录

_FUNCTION_:函数名称

_CLASS_:类的名称

_TRAIT_:Trait的名字

_METHOD_:类的方法名

_NAMESPACE_:当前命名空间的名称

15. 命名空间

<?php
namespace MyProject {
    class Connect {  }
    function connect() {   }
}

namespace AnotherProject {
    const CONNECT_OK = 1;
    class Connection {  }
    function connect() {   }
}
?>

避免重名问题,声明命名空间前唯一可使用的代码是declare(encoding = '  '),

 16. 面向对象

类定义:class 类名{}

<?php
class phpClass {
  var $var1;
  var $var2 = "constant string";
  
  function myfunc ($x) {
     [..]
  }
}
$x = new phpClass;
?>

变量 $this代表自身的对象。(类似于结构体,定义一个x变量,使用new)

PHP_EOF 为换行符。

析构函数

void __destruct ( void )

继承

class Child extends Parent {
   // 代码部分
}

其中Child继承了Parent,并且进行扩展。

17. 接口

<?php

// 声明一个'iTemplate'接口
interface iTemplate
{
    public function f($name, $var);
    public function g($template);
}


// 实现接口
class Template implements iTemplate
{
    private $vars = array();
  
    public function f($name, $var)
    {
        $this->vars[$name] = $var;
    }
  
    public function g($template)
    {
        foreach($this->vars as $name => $value) {
            $template = str_replace('{' . $name . '}', $value, $template);
        }
 
        return $template;
    }
}

使用接口可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容。

接口是通过 interface 关键字来定义的,就像定义一个标准的类一样,但其中定义所有的方法都是空的。

使用接口,需要用到implements关键字。

18. 抽象类

abstract class AbstractClass
{
 // 强制要求子类定义这些方法
    abstract protected function f1();
    abstract protected function f2($prefix);

    // 普通方法(非抽象方法)
    public function printOut() {
        print $this->f1() . PHP_EOL;
    }
}

抽象类不能被实例化,被定义为抽象的方法只是声明了其调用方式(参数),不能定义其具体的功能实现。

当一个子类继承抽象类时,必须定义抽象类的所有抽象方法

此外,子类方法可以包含父类抽象方法中不存在的参数。

19. Static:声明类属性或方法为 static,就可以不实例化类而直接访问。

<?php
class Foo {
  public static $x = 'we';
  
  public function f() {
     return self::$x;
  }
}

print Foo::$x . PHP_EOL;
$foo = new Foo();

print $foo->f() . PHP_EOL;
?> 
输出:we we

静态属性不可以由对象通过 -> 操作符来访问。

20. final关键字

若一个类中的方法被定义了final,则该方法不能被子类继承。

21. 在子类中调用父类的构造方法使用:parent::_construct()

22. PHP构造函数

<?php
class BaseClass {
   function __construct() {
       print "BaseClass 类中构造方法" . PHP_EOL;
   }
}
class SubClass extends BaseClass {
   function __construct() {
       parent::__construct();  // 子类构造方法不能自动调用父类的构造方法
       print "SubClass 类中构造方法" . PHP_EOL;
   }
}
class OtherSubClass extends BaseClass {
    // 继承 BaseClass 的构造方法
}

// 调用 BaseClass 构造方法
$obj = new BaseClass();

// 调用 BaseClass、SubClass 构造方法
$obj = new SubClass();

// 调用 BaseClass 构造方法
$obj = new OtherSubClass();
?>

构造方法,定义一个变量时就执行。

ctfshow web 入门

web 19

查看页面源码,得到密码

再抓一下包,改一下密码。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值