20155222卢梓杰 实验八 Web基础

实验八 Web基础

  • 1.安装apache

    sudo apt-get install apache2

  • 2.启动apache

    service apache2 start

  • 3.使用netstat -tupln |grep 80命令查看80端口是否被占用,如果已被占用,修改配置文件ports.conf中的内容以修改监听端口vim /etc/apache2/ports.conf

  • 4.重启apacheservice apache2 restart
  • 5.测试apache是否正常工作

    浏览器打开 127.0.0.1:5222

    可正常打开Apache介绍网页

    测试:apache可读取工作目录下的文件vi /var/www/html/test.txt

  • 6.准备一个能提交用户名密码的login.html页面并放到路径/var/www/html下,里面写以下代码(建议在主机生成html文件再放入虚拟机)
        <html>
    <head>
        <script>
    
    function inputTest(){
        if (document.getElementById("password").value.length>4){
            return true
        } else {
                return false;
        }
    }
    function inputname(){
        username = document.getElementById("username");
        if(username.value=="Please Input Your Username"){
            username.value = "";
            username.style.color = "Black";
        }
    
    }
    function nameempty(){
        username= document.getElementById("username")
        if(username.value == ""){
            username.value = "Please Input Your Username";
            username.style.color = "Gray";
        }
    
    }
    
        </script>
    
    </head>
    <body>
    
    Please Input Your Name and Password to login
    <form action="login.php" method="GET" onsubmit="return inputTest()">
        <input type="text" name="username" id="username" value="Please Input Your Username" onclick="inputname()" style="color: Gray;" onblur="nameempty()" />  <br>
        <input type="password" name="password" id="password"/>  <br>
        <input type="submit" value="Login GET"/>
    </form>
    <br>
    <br>
    
    </body>
    </html>
    

  • 7.安装PHP

    sudo apt-get install php

  • 8.测试PHP是否能正常工作

    vi /var/www/html/test.php内容为

    <?php
    include($_GET["a"]);
    ?>

    浏览器打开 127.0.0.1:8088/test.php?a=/etc/passwd

    可看到/etc/passwd文件的内容。注意PHP变量大小写敏感。

  • 9.尝试获取表单数据/var/www/html/login.php,内容为

    <!DOCTYPE html>
    <html>
    <body>
    <?php
    $uname=($_GET["username"]);
    $pwd=($_GET["password"]);
    echo "username:";
    echo $uname;
    echo "<Br>password:";
    echo $pwd;
    ?>
    </body>
    </html>

    在访问刚刚的login.html页面进行登录

    下面尝试使用POST方法

    将login.html和login.php中的GET都改成POST就行了

    通过比较可以看出,get方法直接将参数放在url中,而post方法将参数放在HTML Header内提交,所以提交敏感数据应该使用post方法,,

  • 10.安装mysql

    apt-get install mysql-server mysql-client mysql-workbench

    失败了,试了网上各种方法都不行。。

    最后按着网上的说法直接输入命令service mysql start,再输入mysql -u root -p登录,默认密码为空,结果发现打开的是MariaDB。。网上说是mysql的一个分支balabala,不管了先用着

    查看基本信息show databases;(每个命令后面记得分号结束)

    还行,用起来好像差不多

    修改密码

    UPDATE mysql.user SET authentication_string = PASSWORD(‘新的密码‘), plugin = ‘mysql_native_password‘ WHERE User = ‘root‘ AND Host = ‘localhost‘;

    注意,这里跟mysql不太一样,如果不这么写后面会出错

    然后依次输入以下内容(我的名字用的lzj,各位根据自己情况修改)

    CREATE SCHEMA `lzj`;
    CREATE TABLE `lzj`.`users` (
     `userid` INT NOT NULL COMMENT ‘‘,
     `username` VARCHAR(45) NULL COMMENT ‘‘,
     `password` VARCHAR(256) NULL COMMENT ‘‘,
     `enabled` VARCHAR(5) NULL COMMENT ‘‘,
     PRIMARY KEY (`userid`) COMMENT ‘‘);
    use lzj
    insert into users(userid,username,password,enabled) values(1,‘admin‘,password("admin"),"TRUE");

    最后可以看到

  • 11.php+mysql实践

    安装开发库

    apt-get install php-mysql php-mysqli

    然而好像已经有了不用安装

    可以通以下指令确认mysql mysqli的安装结果。

    #locate mysql.so

    #locate mysqli.so

    将刚刚的login.php改为以下内容

        <!DOCTYPE html>
    <html>
    <body>
    
    <?php
    
    $uname=($_GET["username"]);
    $pwd=($_GET["password"]);
    
    /* echo $uname; */
    
    $query_str="SELECT * FROM users where username=‘{$uname}‘ and password=password(‘{$pwd}‘);";
    
    /* echo "<br> {$query_str} <br>";*/
    
    $mysqli = new mysqli("127.0.0.1", "root", "你的密码", "刚刚创建的SCHEMA的名字");
    
    /* check connection */
    if ($mysqli->connect_errno) {
        printf("Connect failed: %s\n", $mysqli->connect_error);
        exit();
    }
    /* Select queries return a resultset */
    if ($result = $mysqli->query($query_str)) {
        if ($result->num_rows > 0 ){
            echo "<br> Wellcome login Mr/Mrs:{$uname} <br> ";
        } else {
            echo "<br> login failed!!!! <br> " ;
        }
        /* free result set */
        $result->close();
    }
    $mysqli->close();
    ?>
    </body>
    </html>
    

  • 11.简单sql注入

    用户名处输入‘ or 1=1#,密码任意,长度超过4就行

    成功登陆,下面尝试添加用户

    用户名处输入

    ‘;insert into users(userid,username,password,enabled) values(5222,‘abc‘,password("123456"),"TRUE");#

    在数据库中可以直接插入一个伪造的用户名,密码,下次就可以用伪造的用户名密码登录网站了,但是得修改一下之前的代码,因为我们之前的login.php中if ($result = $mysqli->query($query_str))这条判断语句不允许多条sql语句执行,所以将它改成if ($result = $mysqli->multi_query($query_str))便能实现执行多个sql语句

    以上这段话引用自冯佳学姐博客,鸣谢冯家学姐让我跳过一个坑

    查看用户表中内容,已经添加了新用户

    但是这时是没法登录成功的,因为将query改成multi_query之后,返回的将是多个结果集,后续代码也要相应调整,调整方法明天再说,如果不想调整,可以在添加新用户之后再改回query。

  • 12.简单xss

    用户名输入<img src="xingkong.jpg">,密码还是随意,登陆之后就会回显这张图片

    当然这张图片是预先放在/var/www/html目录下的,这个操作是什么意思呢,当我们输入<img src="xingkong.jpg">时,本来应该以文本的形式回显,但是网站把他当成一句代码来处理,假设我们在一个帖子的回复中插入一段恶意的js代码,那么这段代码将被服务器存储,并在其他用户浏览相应网页时被加载,且这段恶意代码并没有以文本的形式显示,而是被执行,那么将产生不好的后果,,实际操作待续。。

原文地址:https://www.cnblogs.com/20155222lzj/p/9038850.html

时间: 2024-11-10 04:23:10

20155222卢梓杰 实验八 Web基础的相关文章

20155222卢梓杰 实验九 Web安全基础

实验九 Web安全基础 今天不多bb,打开webgoat就是干好吧 1.简单字符串sql注入 可以看到这个实验说明是 "下表允许用户查看其信用卡号码.尝试插入一个SQL字符串,以显示所有信用卡号码." 下面已经显示了后台使用的sql语句是 SELECT * FROM user_data WHERE last_name = 'Your Name' 既然我们的目的是要显示所有信用卡的记录,所以我们会想到让SELECT * FROM user_data WHERE后面的表达式为永真,所以我们

20155222卢梓杰 实验六 信息搜集与漏洞扫描

实验六 信息搜集与漏洞扫描 DNS IP注册信息的查询 首先试下查找学校官网的IP 方法一 使用whois+域名 失败了 方法二 nslookup法 还是失败了 方法三 直接ping法 等了很久都没反应,看来是失败了 方法四 netcraft提供的信息查询服务 查不到 使用http://www.7c.com/查询 很卡,一直没结果 方法五 只好用笨办法,通过wireshark捕获访问该域名时DNS服务器返回的包 得到IP地址202.205.232.8 再用whois+ip地址 搜集到了一些信息

20155222卢梓杰 课下测试04补做

20155222卢梓杰 课下测试04补做 1.SEQ+对SEQ的改变有() A . PC的计算挪到取指阶段 B . PC的计算挪到访存阶段 C . 电路重定时 D . 插入流水线寄存器 E . 对信号进行重排和标号 F . 处理流水线冒险 正确答案: A C D E F 解析:在SEQ+中,创建状态寄存器来保存在一条指令执行过程中计算出来的信号.然后,当一个新的时钟周期开始时,这些信号值通过同样的逻辑来计算当前指令的PC. SEQ+中对状态元素的改变称为电路重定时,在SEQ+的各个阶段之间插入了

20155201 网络攻防技术 实验八 Web基础

20155201 网络攻防技术 实验八 Web基础 一.实践内容 Web前端HTML,能正常安装.启停Apache.理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML. Web前端javascipt,理解JavaScript的基本功能,理解DOM.编写JavaScript验证用户名.密码的规则. Web后端:MySQL基础:正常安装.启动MySQL,建库.创建用户.修改密码.建表. Web后端:编写PHP网页,连接数据库,进行用户认证. 最简单的SQL注入,XSS攻击测

20155325 Exp8 Web基础

实验要求 (1).Web前端HTML(0.5分) 能正常安装.启停Apache.理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML. (2).Web前端javascipt(0.5分) 理解JavaScript的基本功能,理解DOM.编写JavaScript验证用户名.密码的规则. (3).Web后端:MySQL基础:正常安装.启动MySQL,建库.创建用户.修改密码.建表(0.5分) (4).Web后端:编写PHP网页,连接数据库,进行用户认证(1分) (5).最简单的

Linux基础入门(新版)(实验五至实验八)

实验五 环境变量与文件查找 (环境变量的作用与用法,及几种搜索文件的方法) 一.环境变量 1.变量 (1)常变量与值是一对一的关系 (2)变量的作用域即变量的有效范围(比如一个函数中.一个源文件中或者全局范围),在该范围内只能有一个同名变量.一旦离开则该变量无效,如同不存在这个变量一般. 这里是一个例子: declare命令创建一个变量名为 tmp 的变量: $ declare tmp 使用=号赋值运算符为变量 tmp 赋值为 shiyanlou:$ tmp=shiyanlou 读取变量的值,使

Java web基础总结八之—— jsp基础

Java web基础总结八之-- jsp基础 一.什么是jsp? JSP是Java ServerPages的缩写,它和servlet一样,都是用于开发动态web资源的技术.在servlet中拼凑输出html代码时,非常麻烦.而JSP的最大的特点在于,写jsp就像在写html,但是html只能为用户提供静态数据,而Jsp技术允许在页面中嵌套java代码,开发动态资源. 现在随着前端越来越重要,很多的公司都会采取前后端分离的开发模式.即后端只提供返回json等格式的接口,而前端开发人员则通过对后端接

《软件技术基础》实验指导 实验八

查找 实验八 查找 一.实验目的 熟悉线性表.二叉排序树和散列表的查找 能够编写一些查找的算法 二. 实验内容 18个记录的关键字如下,编写分块查找的算法进行查找. 22.12.13.8.9.20.33.42.44.38.24.48.60.58.74.49.86.53 编写一个判别给定的二叉树是否为二叉排序树的算法,设二叉树以二叉链表存储表示,结点的数据域只存放正整数. Tips 8.1 分块查找 http://student.zjzk.cn/course_ware/data_structure

20155201 网络攻防技术 实验九 Web安全基础

20155201 网络攻防技术 实验九 Web安全基础 一.实践内容 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 二.报告内容: 1. 基础问题回答 1)SQL注入攻击原理,如何防御 SQL注入即是指web应用程序对用户输入数据的合法性没有判断,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息. SQL注入攻击的典型手段:判断应用程序是否存在注入漏洞,收集信息