服务器运维:CentOS 7下搭建LAMP渗透环境

文章目录

    • 什么是LAMP?
    • 如何在CentOS 7下搭建LAMP环境
    • Apache默认目录
    • 主配置文件httpd.conf的各项参数
    • 世界上最好的语言
    • HTML_POST_PHP示例
    • HTML_PHP_MySQL交互示例

什么是LAMP?

LAMP=Linux+Apache+MySQL+PHP

如何在CentOS 7下搭建LAMP环境

参考博客1
参考博客2
Firewalld命令集
Apache官方文档

Apache默认目录

服务器运维:CentOS 7下搭建LAMP渗透环境_第1张图片

主配置文件httpd.conf的各项参数

服务器运维:CentOS 7下搭建LAMP渗透环境_第2张图片

参数解析

DocumentRoot : 网站根目录
默认路径:/var/www/html
将DocumentRoot和DirectoryIndex都改为/home/wwwroot
参照上面的博客把SELinux禁用掉

在这强调一下
生产环境中一定要把网站的物理路径改掉,不要使用默认的
因为如果攻击者知道你的物理路径就可以通过sql注入拿到os-shell

然后在此目录下新建index.html
内容随便写
重启httpd服务

systemctl restart httpd

然后去浏览器输入127.0.0.1/index.html试一下
成功
附:Document和DirectoryIndex的区别

因为我前期的主要目的是先搭一个sql注入的渗透环境,所以接下来的部分会讲php和mysql的交互,而不侧重于其他Apache配置如虚拟主机等,有空后期会更

现在我想把我的网站分成不同的部分
比如
127.0.0.1/sqlinjection/
127.0.0.1/weakpassword/
这时候就要用到别名Alias了,它可以为url定义一个路径映射的关系
Apache Alias

世界上最好的语言

因为我只是为了搭建一个渗透环境,所以我的PHP博客重点在交互的部分
Web基础:世界上最好的语言

如果是开发人员建议去
菜鸟教程
进行系统学习

PHP的官方文档布局真的是一坨shit

HTML_POST_PHP示例

原博客
新建first.html

<!DOCTYPE html>
<html>
	<meta charset="gbk"> 
	
<head>
	<title>test</title> 
</head>

<body>
	<form style="text-align:center" action="test.php" method="post">
	//action指定向服务器上的test.php发送数据
	用户: <input type="text" name="user" value=""><br>
	密码: <input type="password" name="mima" value=""><br>
 
	<input type="submit" value="确定">
	//点击确定后submit键值对
	</form>
	<p style="text-align:center">点击"确定"按钮,表单数据将被发送到服务器上的“test.php”。</p>
</body>

</html>

同目录下新建test.php

<html>  
<body>  
   Welcome  echo $_POST["user"]; ?><br>  
   //从以POST方式提交到服务器的数据中提取user的值并回显
   Your password is:  echo $_POST["mima"]; ?>  
   //同理
</body>  
</html>

在first.html中输入用户名为123,密码456,点击确定
可以看到以POST方式提交了两个键值对
服务器运维:CentOS 7下搭建LAMP渗透环境_第3张图片
页面自动跳转到test.php
服务器运维:CentOS 7下搭建LAMP渗透环境_第4张图片

HTML_PHP_MySQL交互示例

原博客

建库建表

终端登录MySQL

mysql -u root -p

创建数据库phptest

create database phptest

在phptest中建表userpass

use phptest
create table `userpass`(
`username` VARCHAR(100) NOT NULL PRIMARY KEY,
`password` VARCHAR(100) NOT NULL
);

注意:建表时表名和列名两侧的符号是ESC下面的键`而不是单引号’

写代码

建议新手不要直接复制粘贴
自己动手敲一遍可以理解一下思路...
因为原博客是图片并没有给代码,所以我是手敲的
在敲的过程中有很多地方就想明白了

下面public.php用于连接phptest数据库


$servername = "localhost";
$username = "username";
$password = "pswd";
$dbname="phptest";



$conn = new mysqli($servername, $username, $password,$dbname);
// 创建连接
//一定注意把数据库名传进去,不然下面调用mysqli_query()时始终返回False

if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
}
echo "连接成功";
?>

下面regist.html

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Regist Page</title>
</head>
<body>
	<form action="regist.php" method="post">
		<label for="username">用户名:</label><input type="text" id="username" name="yonghuming">
		//向服务器提交的是name:value键值对
		<label for="pass">密码:</label><input type="text" id="pass" name="mima">
		<input type="submit" id="btn" value="注册">
		//在页面上显示的文字是“注册”
	</form>
</body>
</html>

向服务器上regist.php提交的键值对
服务器运维:CentOS 7下搭建LAMP渗透环境_第5张图片
regist.php


        include "public.php";
        //引用此文件连接phptest

        $name=$_POST['yonghuming'];
        $pass=$_POST['mima'];
        //用REQUEST时两种方式提交的键值对都可以进行接收,也可用与上文对应的POST

        $sql="INSERT INTO userpass(username,password) VALUES ('$name','$pass')";
        //向userpass表中的列username和password插入数据,其值为接收到的$name和$pass
        //注意$name和$pass外都要有单引号

        if($conn->query($sql)===True){
                echo "";
        }
        else{
                echo "";
        }
?>
          

login.html

<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="UTF-8">
		<title>Login</title>
	</head>
	<body>
		<form action="login.php" method="post">
			<label for="username">用户名:</label><input type="text" id="username" name="yonghuming">
			<lable for="pass">密码:</label><input type="text" id="pass" name="mima">
			//POST提交键值对
			<input type="submit" id="btn" value="登录">
		</form>
	</body>
</html>

login.php


        include "public.php";
        //连接数据库
        $uname=$_REQUEST["yonghuming"];
        $pass=$_REQUEST["mima"];
        //提取从login.html中POST的键值对

        $sql="SELECT username,password FROM userpass WHERE username='$uname'";
        //在userpass表中查找符合条件的一行username password

        $re=mysqli_query($conn,$sql);

        $n=mysqli_num_rows($re);
        //返回的行数
        
        if(!$n){
                echo "";
        }
        else{
                while($data=mysqli_fetch_assoc($re)){
						if($data['username']==$uname&&$data['password']==$pass){
                        //如果查询出的data的['username']的值与传入的uname的值相等且...相等
                                echo "";}
                        else{
                        //密码的值与数据库中值不匹配
                                echo "";
                        }
                }
        }
?>

以上代码全部测试通过

你可能感兴趣的:(服务器运维)