Background

想来想去,把它作为将来自己的培训内容也可把233,也当复习了整理一遍

part0

环境搭建:phpstudy&&phpstorm

part1 html+css基础知识

正常的<title><body>
然后有序无序列表<ol><ul>
<a href 超链接 伪协议xss
关注一下target的参数 blank self
<img src 引进图片 onerror事件xss
引进图片的方式可以浅谈一下绝对路径和相对路径
多媒体标签
<audio src
表格标签
<table border属性有表格框 cellspacing表格缝隙 th表头
背景颜色bgcolor
<form>表单 比较重点的
<iframe>嵌入也可以造成xss之类的
css基础知识
内嵌式css

<p style="border: 1px solid red; padding: 5px">

第二种

<style type="text/css">

/*
css
*/
p{
    border: solid 1px red;
    padding: 30px
}

</style>

第三种外部引进
C01CA51E-62B4-4013-BB55-6173B73BCC1A.png
css 通过选择器来定位
demo

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>测试css2</title>
    <style type="text/css">
        
     .div1{
         border: solid;red 1px;
         background-color: #f00;
         color:#000;
         width: 400px;
         height: 200px;
 
     }


</style>
</head>
<body>

    <div class="div1">
        php漏洞挖掘
    </div>

</body>
</html>

boostrap jquery下载
拖出boostrap.min.css boostrap.min.js jquery .js
新建一个html
导入这几个东西

<script type="text/javascript" src ="./jueqry-3.6.0.js" ></script>
    <script type="text/javascript" src="./bootstrap.min.js"></script>
    <link rel="stylesheet" type="text/css" href="./bootstrap.min.css">

然后用一些写好的东西
bootstrap一个登录框的实例

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>留言板</title>
    <script type="text/javascript" src ="./jueqry-3.6.0.js" ></script>
    <script type="text/javascript" src="./bootstrap.min.js"></script>
    <link rel="stylesheet" type="text/css" href="./bootstrap.min.css">
</head>


<body>

<nav class="navbar navbar-default">
  <div class="container-fluid">
    <!-- Brand and toggle get grouped for better mobile display -->
    <div class="navbar-header">
      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
        <span class="sr-only">Toggle navigation</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
      <a class="navbar-brand" href="#">留言板</a>
    </div>

    <!-- Collect the nav links, forms, and other content for toggling -->
    <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
      <ul class="nav navbar-nav">
       <li><a href="#">我要留言</a>

      </ul>
      <form class="navbar-form navbar-right">
        <div class="form-group">
          <input type="text" class="form-control" placeholder="Search">
        </div>
        <button type="submit" class="btn btn-default">搜索留言</button>
      </form>
  </div><!-- /.container-fluid -->
</nav>
<div class="row">
  <div class="col-md-4"></div>
 <div class="col-md-4">
   <legend>用户注册</legend>
   <form class="form-horizontal">
    <div class="form-group">
    <label for="inputusername" class="col-sm-2 control-label">Username</label>
    <div class="col-sm-10">
      <input type="username" class="form-control" id="inputusername" placeholder="username">
    </div>
  </div>
  <div class="form-group">
    <label for="inputEmail3" class="col-sm-2 control-label">Email</label>
    <div class="col-sm-10">
      <input type="email" class="form-control" id="inputEmail3" placeholder="Email">
    </div>
  </div>
  <div class="form-group">
    <label for="inputPassword3" class="col-sm-2 control-label">Password</label>
    <div class="col-sm-10">
      <input type="password" class="form-control" id="inputPassword3" placeholder="Password">
    </div>
  </div>
  <div class="form-group">
    <div class="col-sm-offset-2 col-sm-10">
      <div class="checkbox">
        <label>
          <input type="checkbox"> Remember me
        </label>
      </div>
    </div>
  </div>
  <div class="form-group">
    <div class="col-sm-offset-2 col-sm-10">
      <button type="submit" class="btn btn-primary">Sign in</button>
    </div>
  </div>
</form>
 </div>
<div class="col-md-4">
</div>
</div>
  


</body>
</html>

part2 php知识

平常的学习中要经常搜索函数的用法,现用现查
变量命名 $ 由字母数字下划线开头 不能以数字开头
php的注释 和c语言大致相同
数据类型
整型
浮点型
字符型 单引号双引号都行
bool型 真假
array 数组 索引数组 关联数组
NULL 空类型
资源类型和对象类型

先说三个函数
isset()来判断变量是否存在 返回值是true和false
var_dump()打印数据类型
gettype()取数据类型

第一个在挖掘漏洞的大知识点

弱类型等于

弱类型
var_dump("1"==1);
var_dump("1a"==1);

强类型等于

然后第一个比较让人晕的知识点 三元运算符
A2A861AC-070C-462B-B8A3-40A2C7EE1B0E.png
结果为0
三元运算符的方法是前面的不等式成立则是冒号前面的值 不然就是冒号后面的值
主要结构
选择结构循环结构
if ..else..
switch..case..
php最常用的东西字符串详解
字符串变量用.拼接
双引号可以解析变量 单引号不行
strlen()函数 计算长度
一个汉字占三个字符
mb_strlen() 第二个参数是解码形式
strpos()第一个参数待查字符串 第二个是要查的字符串 返回值是false或者数字位置
stripos()不区分大小写的strpos
str_replace()替换
strstr()返回字符串查找到元素和元素之后的字符串
stristr不区分大小写
substr截取子串 字符串,初位置,末位置
strrchr()取文件后缀名
split正则分割
explode 数组分割
implode 将数组转换为字符串
trim()去除首尾的空格
ltrim()左
rtrim()右
addslashes 用反斜线引进字符串 防止 sql
htmlspecialchars 过滤xss
数组
索引数组和关联数组
C703FF8E-5CBA-4BAF-8C40-29E6AE949AE5.png
遍历数组
第一种 for循环打印
也可以用foreach

foreach ($arr as $key => $value) {
    echo $key."---".$value;
}

超全局变量
$GLOBALS 其实是个包含以下数组的二维数组
$_SERVER 服务器信息
$_GET 浏览器传参/表单传参
$_POST 浏览器传参/表单传参
$_REQUEST $_GET + $_POST

php常量
define

超全局刚才说过
全局
局部 函数如果用&符号传参是可以改函数外的值

php的cookies和session
setcookies设置失效时间
小坑(用cookies的特性写一个页面访问次数)

<?php

$num =0;
if(empty($_COOKIE["acces"]))
{
    setcookie("access",1);
    //echo $_COOKIE["access"];
    echo "1";
}
else
{
    $num = $_COOKIE["access"];
    $num++;
    setcookie("access",$num);
    //echo $_COOKIE["acces"];
    echo $num;
}

?>

setcookies第一次会失效
$_SESSION使用之前要session_start()
$_SESSION 登陆测试
SESSIOn.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>session 登陆测试</title>
</head>
<body>
    <form action="session.php" method="post">
        用户名<input type="text" name="name1">
        密码<input type="password" name="pass1">
        <input type="submit" name="登陆">
    </form>

</body>
</html>

session.php

<?php
session_start();
if(empty($_POST))
{
    echo "No";
}
else{
    $name = $_POST['name1'];
    $pass = $_POST['pass1'];
    if($name =="admin" && $pass =="123")
    {
        $_SESSION["name"] ="admin";
        echo 1;
    }
    else
    {
        echo "无法登陆";
    }
}
?>

文件操作
require(报错中止执行)
include(报错不执行)
require_once
include_once
当然 有的ctf 有绕过require_once的
文件上传
__DIR__当前目录
echo dirname(__DIR__)上层目录
realpath真实目录
unlink删除函数
file_get_contents
file_put_contents

MYSQL

基础命令不想再提了。。
约束类型
not null
defaulet...
alter table add 给表加列
delete 和drop区别 drop会删除表的结构
mysql查询操作
like '%xx'模糊
group+ having
连接查询
join on
内置函数
floor()向下取整
database() user() version() loadfile()

OOP

static
A::$location调用
static是可以重新赋值的
const不可以
子类中可以这样子
parent::show()
调用父类函数
final之后不能重写
抽象类和接口
抽象类和接口都不能实例化
复用类也不可以,这些在pop链中至关重要
单例模式(只用一个类,类不可以继承)
mysql和php搭配写一个增删改查

<?php

abstract class aDB
{
    abstract public function conn();

    abstract public function getAll($sql);

    abstract public function getRow($sql);

    abstract public function getOne($sql);

    abstract public function Exec($sql);

    abstract public function lasiId();
}

class Mysql extends aDB
{
    public $link = null;

    public function __construct()
    {
        $this->link = new mysqli("localhost", "root", "root", "admin", 8889);
    }

    public function conn()
    {
        return $this->link;

    }

    public function getAll($sql)
    {

        $res = $this->link->query($sql);
        $data = array();
        while ($row = $res->fetch_assoc()) {
            $data[] = $row;
        }
        return $data;
    }

    public function getRow($sql)
    {
        // TODO: Implement getRow() method.
        $res = $this->link->query($sql);
        $row = $res->fetch_assoc();
        return $row;


    }


}

?>

PDO预编译