PHP 开源CMS 寻找EXP 基本知识入门

PHP概述

PHP基本常识(了解)

  • PHP定义

    Personal Home Page Tools 原始定义 Hypertext Preprocessor 当前定义 超文本预处理器
    是一种被广泛应用的开放源代码的多用途语言
    PHP是服务器端脚本,返回的是HTML代码

    与php竞争的语言
    C# 微软公司
    Java Oracle公司
    python Google公司

  • PHP开发环境
    服务器端脚本 最主要的领域 php是主要方式
    命令行脚本 直接在dos命令提示符下执行php

  • PHP运行环境
    OS:Windows、Linux、Unix、MAC
    web服务器:apache、iis、nginx、
    数据库:MySQL、SQL server、Oracle

示例程序

<?php
$a=33;
$b=22;
if($a>$b){
echo($a);
}else{
echo($b);
}
?>

PHP 开源CMS 寻找EXP 基本知识入门插图
新建一个记事本 改后缀名为.php 或者notepad++保存为.php 然后将该文件移动到网站根目录 即www
PHP 开源CMS 寻找EXP 基本知识入门插图(1)
PHP 开源CMS 寻找EXP 基本知识入门插图(2)
然后在浏览器输入127.0.0.1 即本地环回地址进行测试
PHP 开源CMS 寻找EXP 基本知识入门插图(3)
嵌入到HTML中

<html>
<body>
		<table border=1>
		<tr><td>
		<?php
		echo date( 'Y-m-d H:i:s' )
		?>
		</td></tr>
		</table>
</body>
</html>

PHP 开源CMS 寻找EXP 基本知识入门插图(4)
报错原因是没有设置系统的 default timezone
PHP 开源CMS 寻找EXP 基本知识入门插图(5)
可以右键phpstudy查看phpinfo
也可以自己写个phpinfo();访问他
PHP 开源CMS 寻找EXP 基本知识入门插图(6)
找到php.ini的路径
PHP 开源CMS 寻找EXP 基本知识入门插图(7)
打开php.ini,date.timezone 原本是空的
PHP 开源CMS 寻找EXP 基本知识入门插图(8)
重启phpstudy 结果没变化。。。。。。可能要重启电脑?还是浏览器?还没试
所以我直接在代码中添加
PHP 开源CMS 寻找EXP 基本知识入门插图(9)
PHP 开源CMS 寻找EXP 基本知识入门插图(10)

PHP基本语法(掌握)

每个语句以;结束
以<?php 开始 以 ?>结束
注释 // 单行
/* */ 块

  • PHP数据类型

    4种标量类型
    Boolean布尔型、integer整性、float浮点型、string字符串
    布尔值 true false 不分大小写
    整型值 十进制 十六进制0x 八进制0 开头
    浮点值0.0 1.5e2 1.5乘10的2次方 e-2 10的-2次方
    字符串 单引号定义的原样输出 双引号定义的会自动转换 “\n”自动换行 “$str” 输出的是给这个变量赋的值
    空白字符串
    没有成员变量的数组 NULL都是false

    2种复合类型 array数组、object对象
    索引数组 $arr=array(1,2,3,4) 下标 0 1 2 3
    $arr[0]=“tom”
    关联数组 $arr=array(‘a’=>1,‘b’=>2) 下标自定义
    $arr[“tom”]=“22”

    2种特殊类型 resource资源、null
    没有被赋值的变量为null
    被unset() $name 也为null

    var_dump($var); 打印这个变量的值

  • PHP变量

    预定义变量
    echo(PHP_VERSION);
    echo FILE //当前文件物理路径
    PHP 开源CMS 寻找EXP 基本知识入门插图(11)

    变量范围
    一般在本程序文件中有效
    用户自定义函数中的变量只在本函数有效
    自定义函数中可以用global定义变量 这样函数外也能引用这个变量
    静态变量static只在用户自定义函数中使用 离开此程序值不会消失

    php外部变量
    当一个表单提交给php程序时,表单中的值会自动在程序中使用
    html表单 get post
    $_GET[‘name’]
    $_POST[‘password’]

    常量
    define(“myname”,“tom”)
    全局 区分大小写

  • PHP常用函数
    strlen() //字符串长度
    strpos() 字符串内指定的字符
    strcmp() strcasecmp() strncmp() 字符串比较
    strstr() stristr() 查找替换
    trim() ltrim() rtrim() 删除空白符
    printf() 输出不同类型值

参考手册
PHP中文参考手册 php_manual_zh.chm
php官方网站可以下载最新的文档
php5中 函数有189类 共有5593个函数
平时开发中常用的也就是100个左右

参考资料:hackctf

PHP网站框架指纹识别

浏览器----中间件------数据库

查看服务器支持的语言
HTTP Header
X-Powered-By
Server
Cookies 中的session ID
URL访问的文件后缀 .jsp .php
报错页面判断中间件
Apache Not Found
IIS Server Error 灰色和红色
Nginx PHP 开源CMS 寻找EXP 基本知识入门插图(12)
插件 W3Techs 可以知道

常见的开源CMS
wordpress
drupal
thinkphp
discuz!
dedecms

御剑扫描后台

找到漏洞
寻找EXP

  • 直接搜索版本可以知道漏洞
  • 通过exploit-db.com 搜索漏洞编号
kali  wpscan --url  

PHP弱类型赛题
字符串与整数比较会进行类型转换 就是1a== 1
md5 0e缺陷 开头的哈希值 字符串不一样但是MD5后结果一样
md5 传入数组结果为NULL
strcmp 也是
sha1 也是
PHP代码分析
全局变量GLOBALS 查看flag
文件包含漏洞
遍历读取文件内容
cookie伪造

php://filter 元封装器
resource 指定要过滤得数据流 文件名
read 设定过滤器名称 以/分隔
write

没有账号? 忘记密码?

社交账号快速登录