CTF之PHP基础学习篇(一)
文章目录
前言
估摸着不少学计算机的同学以及其他专业的小部分同学都对于信息安全感兴趣吧!那对于参加这相关的比赛就应该更有兴趣了。那么我们首先就了解一下下这相关的比赛——CTF(Capture The Flag)
CTF是一种流行的信息安全竞赛形式,其英文名可直译为“夺得Flag”,也可意译为“夺旗赛”。其大致流程是,参赛团队之间通过进行攻防对抗、程序分析等形式,率先从主办方给出的比赛环境中得到一串具有一定格式的字符串或其他内容,并将其提交给主办方,从而夺得分数。为了方便称呼,我们把这样的内容称之为“Flag”。至于更加具体的比赛的了解可能需要自己去看看百度或者其他的一些学习视频,在此不做分析了。
人们常觉得准备期间是在浪费时间,只有当真正机会来临时,自己没能力把握的时候,才觉得自己平时没有准备,浪费了时间。 所以想参加CTF比赛的同学首先需要明白一点这玩意大家是需要基础的,今天我主要分享一下我自己在准备CTF比赛中所掌握的一些必要的基础技能。
CTF之PHP基础
一、PHP是什么?
PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言。除此之外我们还需要了解与他相关的一些概念。
IP(Internet Protocol)是网际互连协议,是TCP/IP体系中的网络层协议,即为计算机网络互连进行通信而设计的协议。
域名(Domain Name),又称网域,是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称。
DNS(域名系统)(Domain Name System)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。
端口(port)可以认为是设备与外界通讯交流的出口。端口可分为虚拟端口和物理端口,其中虚拟端口指计算机内部或交换机路由器内的端口,不可见。如计算机中的80端口。物理端口又称为接口,是可见端口。
二、配置PHP环境
在此以phpstudy (版本8.1.1.2)和vscode(版本1.65)搭建一个简易运行环境
首先先从官网下载这小皮面板 和 vscode。
我们先打开小皮配置一些基础。
首先
第二步
第三步
如若遇到MySQL无法正常启动,可能与自己曾经装的MySQL相冲突了。
以管理员身份运行cmd,切换到MySQL/bin目录下
若要关闭,使用本地MySQL只需要把箭头后面的依次改为
mysqld——install mysql
//重新创建服务名mysql
net startmysql
//启动服务,切换本地MySQL
如若碰到这一类问题
极有可能是数据库无这一字符集,更改字符集即可。
再来设置一下PHP环境路径
先打开此电脑,选择属性,高级系统配置,选择环境变量
打开cmd
接下来我们配置vscode
打开vscode,先下载安装一些PHP插件。
Open PHP 连接网站
PHP Debug 连接PHP编译
PHP IntelliSense 完善PHP代码
到扩展中正找到插件,然后分别点击PHP和PHP IntelliSense插件的 settings.json 文件,翻到最下面 。
将php.exe的文件夹路径添加到Path环境变量中(php.exe的文件夹即可)
例如: "php.validate.executablePath": "C:/phpstudy_pro/Extensions/php/php7.3.4nts/php.exe;", "php.executablePath": "C:/phpstudy_pro/Extensions/php/php7.3.4nts/php.exe;"
将Open PHP 目录修改为小皮的www下
出现如图及成功了。
至此PHP环境配置完成。
三、php基础语法
PHP 一种脚本,可嵌入HTML语言。也是一种弱类型语言,不必声明该变量数据类型。
常见的标记:
脚本标记
标准脚本
php注释与其他语言类似。
PHP输出基础指令 echo/print。
php声明变量和其它语言大致相同,注意一下$符号就行。
PHP的作用域:
局部和全局作用域
在所有函数外部定义的变量,拥有全局作用域。除了函数外,全局变量可以被脚本中的任何部分访问,要在一个函数中访问一个全局变量,需要使用 global 关键字。
在 PHP 函数内部声明的变量是局部变量,仅能在函数内部访问。
PHP数据类型大致与其它一些语言相似,但有些有所不同,比如PHP 资源类型。
PHP 资源 resource 是一种特殊变量,保存了到外部资源的一个引用。常见资源数据类型有打开文件、数据库连接、图形画布区域等。由于资源类型变量保存有为打开文件、数据库连接、图形画布区域等的特殊句柄,因此将其它类型的值转换为资源没有意义。使用 get_resource_type() 函数可以返回资源(resource)类型:get_resource_type(resource $handle): string
PHP类型比较
==(比较值,不比较类型)
===(比较值,比较类型)
PHP 常量
常量是一个简单值的标识符。该值在脚本中不能改变。
一个常量由英文字母、下划线、和数字组成,但数字不能作为首字母出现。 (常量名不需要加 $ 修饰符)。
PHP并置运算符·
PHP运算符
许多规则与其他语言运算符规则大致相同。有一些比较特殊。
-x 取反x<>y 不等于 x!==y 绝对不等于 如果 x 不等于 y,或它们类型不相同,则返回 true 5!=="5" 返回 true
PHP比较运算符
<=>
$c = $a <=> $b;如果 $a > $b, 则 $c 的值为 1。如果 $a == $b, 则 $c 的值为 0。如果 $a < $b, 则 $c 的值为 -1。
PHP的条件判断语句与循环语句与我们所学的C++等其它语言语法相似,在此不再多讲。
PHP数组
在 PHP 中,array() 函数用于创建数组:array();
在 PHP 中,有三种类型的数组:
数值数组 - 带有数字 ID 键的数组
关联数组 - 带有指定的键的数组,每个键关联一个值
$age=array("a"=>"35","b"=>"37","e"=>"43");
多维数组 - 包含一个或多个数组的数组
数组排序
sort() - 对数组进行升序排列
rsort() - 对数组进行降序排列
asort() - 根据关联数组的值,对数组进行升序排列
ksort() - 根据关联数组的键,对数组进行升序排列
arsort() - 根据关联数组的值,对数组进行降序排列
krsort() - 根据关联数组的键,对数组进行降序排列
在这里就不再详细讲述PHP其他语法点,想要了解更多的可以去看看菜鸟教程PHP。
总结
以上就是今天要讲的内容,本文仅仅简单介绍了PHP的相关知识。至于PHP与CTF之间的具体联系,之后会在做题中体现出来。如果文章中存在啥问题,欢迎大家私信我呦。
来源地址:https://blog.csdn.net/m0_62596232/article/details/123595551
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341