20145319 《网络渗透》web基础

实验要求

  • 掌握网页编程的基本知识

    • html语法
    • javascript
    • php
    • 前端,后台,数据库之间如何建立连接
  • 掌握数据库的使用
    • mysql的启动,创建数据库,表单等基本操作
    • sql语句的使用
  • 了解如今网页设计上的一些安全隐患以及原理
    • sql注入
    • xss攻击

问题回答

  • 什么是表单

    • 表单是web设计中一个组件,用于采集用户输入的数据,以便进行后续处理,实现和用户之间的交互
  • 浏览器可以解析运行什么语言
    • html
    • php
    • 脚本语言:javascript, python 等
  • WebServer支持哪些动态语言
    • javascript, python等脚本语言

实验过程

web前端html

  • 首先检查自身的端口监听状况,确保自身的apache2网页可以访问

  • 通过kill命令杀死占用80端口的进程,并重启apache2,再次通过浏览器访问自身Ip,发现可以正常访问自身的apache网页

  • 进入apache2的存储html文件的文件夹/var/www/html修改相应html文件,设计自身表单(这里对文件夹中的login.html略作一点修改)

      <html>
    <head>
    <title>
    test_20145319
    </title>
    </head>
    <body>
    <h1>Login</h1>
    <form action="query.php" method="GET" onsubmit="return inputTest()">
    student_num:<input type="text" name="username"/> <br>
    password :<input type="password" name="password" id="ppp"/> <br>
    <input type="submit" value="Login"/>
    </form>
    <br>
    <br>
    </body>
    </html>
  • form标签中的action指定了处理表单提交信息的程序,method决定了传输方法,在这里因为还没有配置相应文件,因此此时提交会显示404错误

前端javascript

  • 概念:一种用于web开发的脚本语言,用于实现网页上的一些动态功能以及实现与用户之间的互动

  • DOM(文档对象模型):是W3C组织推荐的处理可扩展标志语言的标准编程接口

  • 以下使用javascript创建一些简单的用户名密码的验证规则(用户名不能为空以及对密码长度做出限制)

      <html>
    <head>
    <script>
    function username_test(){
    var nameTest=document.getElementById("username");
    if(nameTest.value==""){
    alert("用户名不能为空");
    }
    } function password_test(){
    var pwdTest=document.getElementById("password");
    if(pwdTest.value.length<6){
    alert("密码长度不得少于六位");
    }
    }
    </script>
    </head>
    <body>
    </body>
    </html>

web后台(mysql)

  • 启动mysql(命令与启动apache2类似)

  • 使用默认用户名密码登录mysql(默认密码:p@ssw0rd)

  • 使用show databases;命令查看基本信息(必须带分号)

  • 修改密码:

    • 输入use mysql;,选择mysql数据库

    • 输入select user, password, host from user;,mysql库中的user表中存储着用户名、密码与权限

    • 输入UPDATE user SET password=PASSWORD("新密码") WHERE user='root';

    • 输入flush privileges;,更新权限

    • 之后quit退出mysql就可以使用新的密码来登录mysql

  • 创建新表:

    • CREAT SCHEMA theNAME;命令创建库,之后添加表单

    • 之后向表中添加我们需要的信息

    • 使用命令就可以看到我们刚刚添加的用户信息

web后台(php)

  • 首先编写一个简单的php文件myphpTest.php

      <?php
    echo ($_GET["A"]);
    include($_GET["A"]);
    echo "hello php--20145319<br>";
    ?>
  • 将上述所有讲过的知识运用起来,继续修改我们的login.html,代码如下

      <html>
    <head>
    <title>
    test_20145319
    </title>
    <script>
    function inputTest(){
    var nametest=document.getElementById("uname");
    var pwdtest=document.getElementById("pwd");
    if(nametest.value=""){
    alert("username cannot be empty");
    return false;
    }
    if (pwdtest.value.length<4){
    alert("the length of password must be more than 4 bytes");
    return false;
    } else {
    return true;
    }
    }
    </script>
    </head>
    <body>
    <h1 align=center>Login</h1>
    <form action="login.php" method="GET" onsubmit="return inputTest()">
    <p align=center>
    student_num: <input type="text" name="username" id="uname">
    </p>
    <p align=center>
    password :<input type="password" name="password" id="pwd">
    </p>
    <p align=center><input type="submit" value="Login"></p>
    </form>
    </body>
    </html>
  • 再修改login.php使后台与我们的数据库连接起来,其关键就在于修改mysqli中的密码和库名(代码如下)

      <html>
    <body> <?php
    echo "welcome!";
    $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", "wz616616", "zk5319"); /* check connection */
    if ($mysqli->connect_errno) {
    printf("Connect failed: %s\n", $mysqli->connect_error);
    exit();
    } echo "connection ok!"; /* 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>
  • 之后分别输入正确,错误的用户名密码,结果如下

sql注入

  • sql注入是基于网站对于玩家的输入没有任何限制而造成的一种漏洞,使得我们可以任意构造sql语句,来达到我们想要达成的目的,例如获得数据库返回数据,或者欺骗数据库得到权限

  • 永真式,就是构造sql语句使其永远为真,例如在这里我们可以输入' or 1=1#,这样数据库受到的合成语句为select * from users where username='' or 1=1#',where之后的条件总是真的,所以总能成功登录

xss攻击

  • Xss,跨站脚本攻击,是由于允许用户将代码植入到提供给其它用户使用的页面中引起的。因此我们可以通过针对性的插入恶意html代码,来篡改网页源码,达到我们的目的

  • 简单实现在网页中插入图片,只需要在输入栏中填入img标签即可

  • 貌似是图片大小太大了,导致无法显示,但是基本效果已经可以看出,确实可以通过img标签插入图片,那么如果有人通过xss攻击插入iframe标签附带钓鱼网站网址呢,那么我们是不是可能在不知不觉的情况下上了黑客的当?(xss当然还有很多其他的用法,这里就不一一展示了,想了解的可以去乌云知识库看看,也可以去直接百度资料)

20145319 《网络渗透》web基础的更多相关文章

  1. 网络对抗——web基础

    网络对抗--web基础 实践内容 (1)Web前端HTML (2)Web前端javascipt (3)Web后端:MySQL基础:正常安装.启动MySQL,建库.创建用户.修改密码.建表 (4)Web ...

  2. 20145306 张文锦 网络攻防 web基础

    20145306 网络攻防 web基础 实验内容 WebServer:掌握Apache启停配置修改(如监听端口)前端编程:熟悉HTML+JavaScript.了解表单的概念编写不同的HTML网页,放入 ...

  3. 20145319 《网络渗透》web安全基础实践

    20145319 <网络渗透>web安全基础实践 问题回答 Sql注入攻击原理,如何防御 攻击原理:由于对于用户输入并没做出相应限制,因此可以通过构造特定的sql语句,达到自身的一些非法目 ...

  4. 20145319 《网络渗透》MSF基础应用

    20145319 <网络渗透>MSF基础应用 一 实验链接 渗透实验一:MS08_067渗透实验 渗透实验二:MS11_050渗透实验 渗透实验三:Adobe阅读器渗透实验 渗透实验四:M ...

  5. 20155324王鸣宇 《网络对抗技术》Web基础

    20155324王鸣宇 <网络对抗技术>Web基础 实践要求 ①Web前端HTML: 能正常安装.启停Apache.理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HT ...

  6. 2017-2018-2 20155228 《网络对抗技术》 实验八:Web基础

    2017-2018-2 20155228 <网络对抗技术> 实验八:Web基础 1. 实践内容 1.1 Web前端HTML 能正常安装.启停Apache.理解HTML,理解表单,理解GET ...

  7. 20155208徐子涵 《网络对抗技术》Web基础

    20155208徐子涵 <网络对抗技术>Web基础 实验要求 Web前端HTML Web前端javascipt Web后端:MySQL基础:正常安装.启动MySQL,建库.创建用户.修改密 ...

  8. 20145319 《网络渗透》MS08_067安全漏洞

    20145319 <网络渗透>MS08_067安全漏洞 一 实验内容 了解掌握metasploit平台的一些基本操作,能学会利用已知信息完成简单的渗透操作 了解漏洞MS08_067的相关知 ...

  9. 2017-2018-2 20155314《网络对抗技术》Exp8 Web基础

    2017-2018-2 20155314<网络对抗技术>Exp8 Web基础 目录 实验内容 实验环境 基础问题回答 预备知识 实验步骤 1 macOS下Apache的配置 2 macOS ...

随机推荐

  1. oracle trunc 函数处理日期格式,日期类型很有用的几个sql

    select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;  --显示当前时间2011-12-29 16:24:34 select trunc ...

  2. 推荐两个国外网站-帮你优化网站SEO和预测下期的PR值

    第一个:http://www.domaintools.com/ (谷歌SEO网站优化伴侣)可以测试你优化网站的分数. 这里使用说明,简单说一下吧: 打开网站后输入自己的域名,点击搜索按钮 第二个查看分 ...

  3. 洛谷P3599 Koishi Loves Construction 构造

    正解:构造 解题报告: 传送门! 这题俩问嘛,就分成两个问题港QwQ 就按顺序趴,先港第一问QwQ 首先要发现,n在膜n意义下就是0嘛 那作为前缀和的话显然它就只能放在第一个 然后再想下,发现,如果n ...

  4. qt——常用的布局方法

    布局相关对象及简介 窗体上的所有的控件必须有一个合适的尺寸和位置.Qt提供了一些类负责排列窗体上的控件,主要有:QHBoxLayout,QVBoxLayout,QGridLayout,QStackLa ...

  5. 自定义Metrics:让Prometheus监控你的应用程序

    前言 Prometheus社区提供了大量的官方以及第三方Exporters,可以满足Prometheus的采纳者快速实现对关键业务,以及基础设施的监控需求. 如上所示,一个简单的应用以及环境架构.一般 ...

  6. 11 jmeter之图形监控扩展

    Jmeter默认监听器的缺陷 Jmeter默认的监听器在表格.文字方面比较健全,但是在图形监控方面比较逊色,尤其在监控Windows或Linux的系统资源方面.但是jmeter作为一款开源工具,允许通 ...

  7. 【剑指offer】用两个栈实现队列

    一.题目: 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 二.思路: 两个栈A,B,A负责进栈,B负责出栈,进栈很容易,A中添加即可,出栈需要从B里出,所以要先 ...

  8. 文件上传 - iframe上传

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. (转)es进行聚合操作时提示Fielddata is disabled on text fields by default

    根据es官网的文档执行 GET /megacorp/employee/_search { "aggs": { "all_interests": { " ...

  10. PAT Counting Leaves[一般]

    1004 Counting Leaves (30)(30 分) A family hierarchy is usually presented by a pedigree tree. Your job ...