20155236范晨歌_Web基础

目录

实践目标

  • (1)Web前端HTML
  • (2)Web前端javascipt
  • (3)Web后端:MySQL基础:正常安装、启动MySQL,建库、创建用户、修改密码、建表
  • (4)Web后端:编写PHP网页,连接数据库,进行用户认证
  • (5)最简单的SQL注入,XSS攻击测试
  • (6)发帖和会话管理

Apache

  • Apache就是一个Web服务器,通过该软件可以通过本机IP和预设的端口来访问该服务器上的网页

  • 开启apache服务:service apache2 start

  • 如果没安装,先:sudo apt-get install apache2

  • 相关重要存储位置:

    • /etc/apache2/apache2.conf:存储apache2的配置
    • /var/www/html:存储网页
    • /var/log/apache2/error.log:存储报错信息
  • 确认80端口开启

  • 查看端口占用情况如下:

  • 如果正常,即可继续执行,该步骤是整个实验的基础,保证Web服务正常开启

    -

前端编程

  • 其中action部分表示的是,在点击submit提交后将会转向哪个请求,就上面这个代码来看,因为本地还没有这个php文件,所以点击后肯定是Not Found

后端编程 PHP

  • 一般来说我们有用到最多的就是javascriptphp两种脚本语言了

javascript

  • 是一种脚本语言,一般可以写在html中<head>部分,响应用户的各种操作
  • 和java比较类似,只不过所有的变量声明都是用var来进行
  • 下面给出一个简单的javascript脚本例子
<script language="javascript">
function isEmpty(){
var id = document.login.usrname.value ;
var pwd = document.login.password.value ;
if (id ==""){
alert("请输入用户名!");
return false ;
} if (pwd ==""){
alert("请输入密码!");
return false ;
}
}
</script>
  • 上述代码的功能是:编写验证用户名和密码的规则,比如用户名和密码不能为空

php

  • PHP,一个嵌套的缩写名称,是英文超级文本预处理语言(PHP:Hypertext Preprocessor)的缩写。PHP 是一种 HTML 内嵌式的语言,PHP与微软的ASP颇有几分相似,都是一种在服务器端执行的嵌入HTML文档的脚本语言,语言的风格有类似于C语言,现在被很多的网站编程人员广泛的运用。

MYSQL & 后端

MYSQL

  • 安装:apt-get install mysql-server mysql-client mysql-workbench

  • 启动:/etc/init.d/mysql start

  • 登录mysql,并输入密码:p@ssw0rd

  • 此处可以修改自己的密码:update user set password=PASSWORD("新密码") where user='root';

  • 输入exit,重新进入即可

  • 搭建数据库

    • 首先,创建数据库:create database fcg;

    • 查看数据库:show databases;

    • 使用数据库:use fcg;

    • 接着,在数据库中创建数据表:create table info (usrname VARCHAR(10), password VARCHAR(64), email VARCHAR(20), type VARCHAR(10));

      -

    • 查看数据表:show tables;

    • 添加数据,格式:insert into 表名 values('值1','值2','值3'...);

    • 查看数据表:select * from info

    • 注:可以根据需要增添更多记录

后端

测试

  • 此时我们可以编写一个简单的php进行验证,与前端代码配套,可以提取出用户名、密码、身份类别信息:
<?php
echo ($_GET["usrname"]);
echo ($_GET["password"]);
echo ($_GET["identity"]);
echo "<br>php page 5236!<br>";
?>
  • 注:进行简单验证后说明,点击“登录”后可以正常跳转到php脚本,说明代码应该没什么问题,接下来就应该往其中添加一些有实际意义的代码了。

编写

  • 我们需要用php脚本语言来连接数据库与前端输入,将输入结果传入到后台(php脚本),并且链接相应的数据库,利用SQL语句读取数据库中的记录,与输入进行比对,成功即可正常登录。
```php
<?php $uname=($_GET["usrname"]);
$pwd=($_GET["password"]);
$type=($_GET["identity"]); // 读取前端数据 /* echo $uname; */ $query_str="SELECT * FROM info where usrname='{$uname}' and password=password('{$pwd}') and type='{$type}';"; //构造SQL语句字符串 /* echo "<br> {$query_str} <br>";*/ $mysqli = new mysqli("127.0.0.1", "root", "20155236", "fcg"); //登录某台服务器的某个mysql数据库 /* check connection */
if ($mysqli->connect_errno) {
printf("Connect failed: %s\n", $mysqli->connect_error); //链接数据库
exit();
}
echo "connection ok!<br> ";
/* Select queries return a resultset */
if ($result = $mysqli->query($query_str)) {
if ($result->num_rows > 0 ){
echo "Wellcome login Mr/Mrs:{$uname} <br> ";
} else {
echo "login failed!!!! <br> " ;
} /* free result set */
$result->close();
} $mysqli->close();
?>
```
  • 登录成功测试效果:

  • 登录失败测试效果:

  • 为了能让登录失败的用户可以重新返回登录界面,可以在php中定义这样一段代码:header("Refresh:3;url=login.html");,可以实现3秒后重新跳回login.html(最终代码见后文链接)

简单SQL注入与XSS

SQL注入

  • SQL本是查询语句,可以实现对数据库的增、删、改、查等操作,是操作数据库数据的直接手段,但是SQL语句是存在缺陷的,根据前文中SQL的编写过程可以体会,当输入某些特定格式的字符串的时候,会利用语法避开一些检查,通常也叫这样的密码为“万能密码”

获取权限

  • 在用户名输入框中输入' or 1=1#,密码随便输入,这时候的合成后的SQL查询语句为select * from info where usrname='' or 1=1#' and password='' and type='',#相当于注释符,会把后面的内容都注释掉,而1=1是永真式,所以这个条件肯定恒成立,所以能够成功登陆:

  • 只要弄懂sql语句查询语法或者上网搜索,就可以找到很多这样的万能密码

删除用户

  • 既然sql语句可以增删查改,那我们也可以通过某个格式,将表中的记录删掉:

    • ';DELETE FROM info WHERE usrname='20155236';#
    • 因为上述语句是2句,所以得改改php代码:if ($result = $mysqli->multi_query($query_str)),当然原来的写法本就是防范SQL注入的一种方法
  • 将该SQL注入语句输入用户名,密码随便输入,点击登录,会提示失败(因为此时的目的并不是登录获取权限,而是删除fcg这条记录)

  • 查看数据库,比对前后的不同:

    • 接下来如果再用之前的账户密码是登录不上去了

XSS

  • XSS又叫CSS (Cross Site Script) ,跨站脚本攻击。它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意的特殊目的。XSS属于被动式的攻击,因为其被动且不好利用,所以许多人常呼略其危害性。
  • 简单的XSS实践:
    • 用户名输入:<img src="5236.jpg">fcg</a>
    • 密码随意,但要保证该图片物理位置和网页在同一个文件夹下

什么是表单

  • 表单在网页中主要负责数据采集功能。
  • 一个表单有三个基本组成部分:
    • 表单标签:这里面包含了处理表单数据所用CGI程序的URL以及数据提交到服务器的方法。
    • 表单域:包含了文本框、密码框、隐藏域、多行文本框、复选框、单选框、下拉选择框和文件上传框等。
    • 表单按钮:包括提交按钮、复位按钮和一般按钮;用于将数据传送到服务器上的CGI脚本或者取消输入,还可以用表单按钮来控制其他定义了处理脚本的处理工作。

浏览器可以解析运行什么语言

  • HTML(超文本标记语言)、XML(可扩展标记语言)以及Python、PHP、JavaScript、ASP等众多脚本语言。
  • 超文本标记语言:HTML
  • 可扩展标记语言:XML
  • 脚本语言:ASP、PHP、Script、JavaScript、VBScript、Perl、Python、ColdFusion、Java、JSP等

WebServer支持哪些动态语言

  • ASP语言,PHP语言和JSP语言

    • ASP:即Active Server Pages,是MicroSOft公司开发的服务器端脚本环境,可用来创建动态交互式网页并建立强大的web应用程序。
    • PHP:即Hypertext Preprocessor,是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,主要适用于Web开发领域。PHP独特的语法混合了C、Java、Perl以及PHP自创的语法。
    • JSP:即Java Server Pages,其根本是一个简化的Servlet设计。JSP技术有点类似ASP技术,它是在传统的网页HTML文件中插入Java程序段和JSP标记,从而形成JSP文件,)。 用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。

实验感想

  • 知识点超级多,需要了解的东西也超级多,但可以概括为:apache(html)<——>php<——>mysql,apache负责搭建web服务挂载html网页,mysql负责数据库的维护,php负责为前二者“搭桥牵线”,使前端与后台数据能够交互。
  • 如果不掌握一些基本的web相关知识与语法,不接触web类基础的编程,是无法理解一些攻防原理的,就像本次简单的SQL注入和XSS攻击,这些都是基于语法的漏洞来实现攻击的。后悔没有好好学啊

20155236范晨歌_Web基础的更多相关文章

  1. 20155236范晨歌_Web安全基础实践

    20155236范晨歌_Web安全基础实践 目录 实践目标 WebGoat BurpSuite Injection Flaws Cross-Site Scripting (XSS) 总结 实践目标 ( ...

  2. 20155236范晨歌_MSF基础应用

    20155236范晨歌_MSF基础应用 20155236范晨歌_MSF基础应用 目录 概述 MS08-067漏洞攻击 MS11-050漏洞攻击 MS10-087漏洞攻击 辅助模块 概述 MSF的六种模 ...

  3. 20155236范晨歌 Exp7 网络欺诈技术防范

    20155236范晨歌 Exp7 网络欺诈技术防范 虚拟机经常崩= =,所以基本上做一个实验换一个... 遇到了一个简单的小问题老师帮忙解决了:虚拟机没联网... 一.基础问题回答 通常在什么场景下容 ...

  4. 20155236范晨歌_exp6信息搜集与漏洞扫描

    20155236范晨歌_exp6信息搜集与漏洞扫描 目录 实践目标 信息搜集 漏洞扫描 总结 实践目标 (1)各种搜索技巧的应用 (2)DNS IP注册信息的查询 (3)基本的扫描技术:主机发现.端口 ...

  5. 20155236范晨歌_EXP3免杀原理与实践

    20155236范晨歌_免杀原理与实践 免杀 概述 免杀,也就是反病毒(AntiVirus)与反间谍(AntiSpyware)的对立面,英文为Anti-AntiVirus(简写Virus AV),逐字 ...

  6. 20155236范晨歌 Exp1PC平台逆向破解及Bof基础实践

    出现的问题及解决: 在下载execstack时,出现了下列签名无效的错误! 解决方案:发现是密钥过期了,将新的密钥填入apt-keyring 输入命令:apt-key adv --keyserver ...

  7. 20155236范晨歌 Exp2后门原理与实践

    ## 实验二 后门原理与实践 1.Windows获得Linux Shell 在windows下,打开CMD,使用ipconfig指令查看本机IP ncat.exe -l -p 5236监听本机的523 ...

  8. 20145221高其_Web基础

    20145221高其_Web基础 目录 实践目标 Apache 前端编程 后端编程 PHP MYSQL & 后端 简单SQL注入与XSS 发帖和会话管理 总结 实践目标 (1)Web前端HTM ...

  9. 20145317彭垚_Web基础

    20145317彭垚_Web基础 基础知识 Apache一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一.它快速.可靠并且可 ...

随机推荐

  1. springboot 1.3.5升级1.5.9后 默认使用tomcat 8.5版本 get请求报400 异常信息为 The valid characters are defined in RFC 7230 and RFC 3986

    1.springboot 1.3.5升级1.5.9后 默认使用tomcat 8.5版本而之前用的是tomcat7    get请求报400 异常信息为 The valid characters are ...

  2. springboot 学习之路 17(webflux 入门 (1))

    Webflux: webflux是在springboot2系列引入的技术:补充一些概念: 1> Reactive Streams 是 JVM 中面向流的库标准和规范: 处理可能无限数量的元素 按 ...

  3. python 多进程、多线程

    1.多线程: 下面讲一个简单用法,这个模块比较简单,但是实际使用中会遇到很多坑 from multiprocessing import process def go(s): print "主 ...

  4. 固态硬盘和机械硬盘的比较和SQLSERVER在两种硬盘上的性能差异

    固态硬盘和机械硬盘的比较和SQLSERVER在两种硬盘上的性能差异 在看这篇文章之前可以先看一下下面的文章: SSD小白用户收货!SSD的误区如何解决 这样配会损失性能?实测6种特殊装机方式 听说固态 ...

  5. python常用模块之logging模块

    #日志级别 : noset debug info warning error critical #控制台默认的级别是warning的. import logging logging.basicConf ...

  6. 从托管映像创建 VM

    可以从 Azure 中托管的 VM 映像创建多个 VM. 托管 VM 映像包含创建 VM 所需的信息,包括 OS 和数据磁盘. 构成映像的 VHD(包括 OS 磁盘和任何数据磁盘)存储为托管磁盘. 先 ...

  7. elasticsearch DSL查询

    总结一个DSL的用法吧,语法网上查去,只记录一点心得,也是研究了半天,太麻烦了 先附上python代码 #!/usr/bin/env python # _*_ coding:utf-8 _*_ fro ...

  8. RBAC用户权限管理数据库设计【转载】

    本文转载自:https://www.kancloud.cn/martist/ma_zhao_liu/374123 简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成“用户-角色-权 ...

  9. 500.19 ,错误:4.00x80070005

    直接把网站根目录添加上everyone权限即可

  10. 阿里云朱照远: AI打开新视界 8K时代已来!

    2018年4月11-12日,2018亚太CDN峰会在北京隆重召开,大会由亚太CDN领袖论坛.电视云论坛.短视频论坛.视频云论坛.新技术论坛.运营商论坛.国际云论坛等7大部分组成.在亚太CDN领袖峰会上 ...