分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 网页技术

20155222卢梓杰 实验八 Web基础

发布时间:2023-09-06 01:54责任编辑:顾先生关键词: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内容为

    <?phpinclude($_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代码,那么这段代码将被服务器存储,并在其他用户浏览相应网页时被加载,且这段恶意代码并没有以文本的形式显示,而是被执行,那么将产生不好的后果,,实际操作待续。。

20155222卢梓杰 实验八 Web基础

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

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved