渗透测试一~~php编程
http协议
域名解析过程:域名->host(如果没有解析的ip)->DNS服务器解析
搭建apache+Mysql+php(Windows下)
创建如图所示三个文件夹
运行msi的安装程序
设置域名和邮箱,将安装目录自定义到apache目录下
访问网页
将php安装在如图所示
使用apache的bin下的httpd.exe程序可以检测配置文件是否正常(注意添加环境变量)
修改apache配置文件:
C:\server\apache\conf\httpd.conf
http,exe -t检查配置文件
使apache能够解析配置文件,添加如下代码,重启apache服务
自己在C:\server\apache\htdocs下建立php页面并访问
现在安装Mysql环境
安装mysql-5.5.49-win32.msi
在C:\server\mysql新建data存放数据库
一直next直到
然后next,直到
添加环境变量
一直默认,安装mysql后,配置php.ini调用mysql
打开php.ini文件,修改如下
最后可以使用phpinfo()查看是否搭建成功
搭建apache+Mysql+php(Centos7下)
1.安装环境
Mysql5.0
apache2.4
centos7
php5.4
2.准备工作
1.更新yum源
2.先dhclient获取ip地址,是网络畅通
3.备份源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bar
3.下载CentOS 7源
cd /etc/yum.repos.d/
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
4.命令生成缓存
yum clean all
yum makecache
3.安装apache服务(在网上各个地方找的)
1.安装编译工具与插件
yum -y install gcc
gcc-c++
make
pcre-devel
expat-devel
Perl
2.把相关压缩包放入到文件夹中
3.解压
tar xf apr-1.7.0.tar.gz
tar xf apr-util-1.6.1.tar.gz
tar xf httpd-2.4.39.tar.gz
4.将插件放到httpd目录下
5.配置
进入安装目录
cd httpd-2.4.39
配置
./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi
//具体功能自行查阅
6.编译及安装
Make
Make install(需要管理员权限)
7.将httpd服务添加到系统服务(开机自启动)
cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
编辑服务(添加以下两行)
vi /etc/init.d/httpd
保存退出
chkconfig --add httpd //将httpd加入到server管理器
systemctl daemon-reload //重新系统系统管理器
8.编辑httpd主配置文件
vi /usr/local/httpd/conf/httpd.conf
修改一下内容
ServerName www.test.com
//优化执行路径(执行程序文件的原路径不在PATH环境变量中,做个软连接使其可以执行)
ln -s /usr/local/httpd/conf/httpd.conf /etc/
ln -s /usr/local/httpd/bin/* /usr/local/bin
9.启动服务
systemctl start httpd
systemctl enable httpd //将httpd设为开机启动
10.真机访问
开启centos的防火墙
查看已经开放的端口:
firewall-cmd --list-ports
开启端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
命令含义:
-zone #作用域
-add-port=80/tcp #添加端口 格式为:端口/通讯协议
-permanent #永久生效,没有此参数重启后失效
重启防火墙
firewall-cmd --reload #重启防火墙
systemctl stop firewalld.service#停止firewall
systemctl disable firewall.service #禁止firewall开机启动
4.安装mysql服务
1.安装编译工具与插件
yum -y install ncurses
ncurses-devel
bison
Cmake(5.5版本后使用cmake配置(注意可能会报错,自行百度解决),之前使用congfigure配置(我安装的是5.0.15))
2.添加mysql组(管理员权限)
groupadd mysql
useradd -g mysql mysql -s /bin/false #创建用户mysql并加入到mysql 组,不允许mysql用户直接登录系统
mkdir -p /usr/local/mysql #创建MySQL安装目录
mkdir -p /usr/local/mysql/var #创建MySQL数据库存放目录
chown -R mysql:mysql /usr/local/mysql/var #设置MySQL数据库目录权 限
chown -R mysql:mysql /usr/local/mysql #设置MySQL数据库目录权限
进入安装目录
3.配置
./configure --prefix=/usr/local/mysql --with-charset=utf8 --with-collation=utf8_general_ci --with-extra-charsets=latin1
注意(参数讲解):
–prefix=/usr/local/mysql ==> 指定mysql的安装目录。
–with-charset=utf8 ==> 指定mysql的默认字符集
–with-collation=utf8_general_ci ==> 指定mysql的默认字符集
–with-extra-charsets=latin1 ==> 添加额外的编码,为了省事,一般就 写all了
4.编译及安装
make
make install(管理员权限)
5.自行写入配置文件
赋予修改权限
chown -R administrator /etc/my.cnf
vi /etc/my.cnf
写入一些数据(删除所有原来的数据)
[client]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock
[mysql]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock
[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /usr/local/mysql/var
port = 3306
character_set_server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket = /usr/local/mysql/mysql.sock
server-id = 1
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES
6.安装并初步配置mysql
cd /usr/local/mysql
bin/mysql_install_db --user=mysql --datadir=/usr/local/mysql/var # 安装系统数据库
bin/mysqld_safe --user=mysql #启动mysql服务
7.更改mysql的root用户密码
bin/mysqladmin -uroot password 123456 #在mysql正常启动的情况下, 更改root用户的登录密码
bin/mysql -uroot -p #输入此命令后,会提示你输入root用户密码123456
show databases; #如果查出所有数据库,说明mysql数据库已经成功安装。
8.把mysql加入到系统服务中(开机自启动)
Cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld #加入到系统服务中,就可以通过service mysqld start|stop|status|restart等进行管理,很是方便,就不用再到/usr/local/mysql
注意: mysql.server ==>该脚本主要用于使用系统V-style运行目录的系统的启动和关闭,它通常安装到mysql下。mysql.server脚 本调用mysqld_safe来启动服务器。 5.0.45/bin/启动mysql了。
9.配置环境变量
cp /usr/local/mysql/bin/mysql /usr/bin/mysql #把mysql常用的工具目录加入到系统变量目录中去,自己选择性加,这样做主要是可以直接运行该工具,而不需要切换到该 目录下,类似于添加环境变量了。
10.开启防火墙(以便远程管理数据库)(自行百度)
11.给root用户开启mysql远程访问权限(以便搭建网站时,直接写入数据 库)
mysql -uroot -p #进入mysql,并输入密码。
grant all on . to root@’%’ identified by ‘123456’; #grant 权限 on 数据库名.表名 to 用户@登录主机 identified by “用户密码”;
flush privileges; #刷新权限,为了开发方便,可以让root用户具有远程访问的权限(%就是允许远程登录的意思)
5.搭建运行php环境
1.安装编译工具及插件(管理员权限)
yum -y install libjpeg
libjpeg-devel
libpng libpng-devel
freetype freetype-devel
libxml2
libxml2-devel
zlib zlib-devel
curl curl-devel
openssl openssl-devel
2.解压安装包
3.配置
进入安装包目录
./configure
–prefix=/usr/local/php
–with-apxs2=/usr/local/httpd/bin/apxs
–with-mysql-sock=/usr/local/mysql/mysql.sock
–with-mysqli
–with-zlib
–with-curl
–with-gd
–with-jpeg-dir
–with-png-dir
–with-freetype-dir
–with-openssl
–enable-mbstring
–enable-xml
–enable-session
–enable-ftp
–enable-pdo
–enable-tokenizer
–enable-zip
4.编译与安装
make
make install
5.编辑配置文件
cp php.ini-development /usr/local/php/lib/php.ini
//创建配置文件
vi /usr/local/php/lib/php.ini //编辑配置文件
mysqli.default_socket = /usr/local/mysql/mysql.sock //将php与mysql关联
date.timezone = Asia/Shanghai //时区设置
6.关联php与apache服务
先服务/usr/local/httpd/conf文件可以修改的权限
chown -R administrator /usr/local/httpd/conf
vi /usr/local/httpd/conf //编辑Apache配置文件,使httpd支持php网页解析
添加以下两行内容:
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
修改以下内容:
DirectoryIndex index.php index.html //此处注意,php文件必须放前面,优先读取
7.php网页位置
/usr/local/httpd/htdocs/
8.开启和结束httpd服务
systemctl stop httpd
systemctl start httpd //重启httpd服务
6.接下来加入wordpress平台
搭建域名
修改apache配置文件,使其包含这个文件
C:\server\apache\conf\httpd.conf
修改:C:\server\apache\conf\extra\httpd-dav.conf将其所有语句注释
修改:C:\server\apache\conf\extra\httpd-vhosts.conf如下图所示
最后,修改host文件,访问页面
PHP变量+变量引用
PHP变量规则:
变量以$符号开头,其后是变量的名称
变量名称必须以字母或下划线开头(中文也可以)
变量名称不能以数组开头
变量名称只能包含数字字符和下划线
变量名称对大小写敏感
PHP引用变量:
不同变量名指向同一地址
数据类型+字符串函数+常量+if+switch+while
1.数据类型
字符型 单引号 双引号
整型 数字
浮点型 没双引号 没单引号 有小数点的整型
逻辑 true false
对象
null
2.字符串函数
strlen() 函数返回字符串长度,以字符计
strops() 函数用于检索字符串内指定的字符或文本
3.常量
设置常量使用define()函数,它有三个参数(名称,值,大小写是否敏感(默认时false))
4.if
5.switch
注意:switch的输出条件
6.while
运算符与优先级
for循环
for(初始化计数器的值;如果值为ture就循环;增加值循环计数器的值)
函数
定义函数
function Name(){
}
函数名以字母或下划线开头
函数名对大小写不敏感
return+引用函数
1.return:它的值就是函数的返回值.
2.引用参数方式:
function demo(&变量名){
}
同理跟变量引用的原理是一样的
3.引用函数:
function &demo(){
}
数组
1.数组就是在内存里有一块连续的内存空间(堆空间),这里面可以保存多个数据,数据没有数据类型的限制。
2.访问数组
数组的本质是变量,访问的时候就是直接使用变量,但是因为数组元素有多个,而系统没有办法直接区分到底用户是访问的哪一个,所以需要用户在访问数组的时候,使用数组下标(键名)
数组下标:
a
r
r
[
键
值
]
字
符
串
下
标
:
arr[键值] 字符串下标:
arr[键值]字符串下标:arr[‘字符串’]
3.数组分类
根据下标的不同进行分类
索引数组:数组的下标全是数字
关联数组:数组的下标全是字符串(使用最多)
混合数组:数组的下标既有数字又有字符串
时间戳
1.什么是时间戳?
时间戳是自1970年1月1日以来的秒数。它也被成为Unix时间戳。一种时间表示方式,定义为从格林威治时间1970年01月01日00分00秒至现在的总秒数。Unix时间戳不仅被使用在Unix系统、类Unix系统中,也在许多其他操作系统中被广泛采用。
2.获取时间戳
Time()//获取当前时间戳
Date()//时间戳转换日期时间
读文件
Fgets(find)//读文件第一行
Fread(find,获取字节)指定获取内容
Filesize(find)//获取文件字节
Fclose(find)//关闭资源
GET跟POST请求
原理区别
一般我们在浏览器输入一个网址访问网站都是GET请求;在FORM表单中,可以通过设置Method指定提交方式为GET或POST提交方式,默认为GET提交方式
HTTP定义了服务器交互的不同方法,GET、POST、PUT、DELETE、HEAD,其中GET和HEAD被称为安全方法,因为使用GET和HEAD的HTTP请求不会产生什么动作。不会产生动作意味着GET和HEAD的HTTP请求不会再服务器上产生任何结果。但是安全方法并不是什么动作都不产生,这里的安全方法仅仅只不会修改信息。
根据HTTP规范,POST可能会修改服务器上的资源的请求。比如优快云的博客,用户提交一篇文章或者一个读者提交时通过POST请求来实现的,因为再提交文章或者评论提交后(即某个页面)不同了,或者说资源被修改了,这些便是"不安全方法"。
三元运算符
empty //如果没有值为真,如果有值为假
isset //如果有值则为真,吐过没有值为假
mysql数据库文件类型+数据库操作
安装完后会有以下目录
Mysqladmin 密码忘记可以用他来重置
Mysql 用来操作数据库
Mysqld 用来开启或者关闭MYSQL
Mysqlimport 数据库导入
登陆了mysql
mysql -h 192.168.1.100 -u root -p -P 111
-h 你的Ip
-U 你的用户名
-p 你的密码 可不填 但是后面要填
-P(大写) 端口号
1.创建数据库
create database 数据库名;
2.选择数据库
use 数据库名;
3.创建表和字段
create table admin{
username varchar(20) not null,
password text not null
};
4.查看表结果desc表名
desc admin;
5.添加数据
insert into 表名 values("");
insert into 表名(字段名) values ("")
6.查询数据库名
select * from 表名
7.修改数据
update 表名 set 字段 = “”;
8.清空表数据
delete from 表名;
9.删除表
Drop table admin;
10.查看Mysql数据库物理文件存放位置
show global variables like “%datadir%”;
11.备份数据库
(1)去data目录把数据库粘贴复制出来,但是要注意版本要一直,以免不兼容
(2)select * from admin into outfile “”;
要有–secure-file-priv的权限
(3)–secure-file-priv=“路径”;
则可以用select导出到那个路径
12.default 值
当不为null型,默认数据值
13.alter
sql alter
14.数据类型
设置数据库文件是3个还是1个
15.自增型
id int not null primary auto_increment;
16.搜索关键字
like “”;
17.分页
limit 0,10 默认第一条从0开始,取10条数据
limit 10,10 从第11条数据开始取10条数据
文件包含
include “”;//包含文件
include_once “”;//如果文件存在就不包含了
PHP操作MYSQL
mysql_connect(‘ip’,账户,密码);
mysql_query(语句);
mysql_fentch_array(语句,参数);
参数:
MYSQL_ASSOC - 关联数组
MYSQL_NUM - 数字数组
MYSQL_BOTH - 默认。同时产生关联和数字数组
注:查询多条只取第一条数据,需要用循环语句来输出所有数据
mysql_num_row()
取得结果集的长度(记录的个数)
面向对象
session与cookie原理
请求网站 如果COOKIE没有PHPSESSID那服务器就给你定义一个PHPSESSID。如果请求网站有PHPSESSID,服务器看到了PHPSESSID之后就获取PHPSESSID内容去找sessionID的内容名字的文件名。
设置cookie与cookie跨域
默认的,cookie只能对当前域名(完整域名:有效的二级域名)有效。
cookie跨域:指的是允许cookie在不同的二级域名之间共享(一级域名一致)
PHP设置COOKIE
Setcookie(“名字”,值,有效时间,‘有效路径’,“有效域”);
Setcookie(“PHPSESSID”,session_id(),time()+100,’/’,“xx.cn”);
文件上传
注意enctype的属性值
配置php.ini信息
文件上传