20155236范晨歌_Web基础
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
- 一般来说我们有用到最多的就是
javascript和php两种脚本语言了
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下运行,也能在其他操作系统上运行。
- ASP:即
实验感想
- 知识点超级多,需要了解的东西也超级多,但可以概括为:
apache(html)<——>php<——>mysql,apache负责搭建web服务挂载html网页,mysql负责数据库的维护,php负责为前二者“搭桥牵线”,使前端与后台数据能够交互。 - 如果不掌握一些基本的web相关知识与语法,不接触web类基础的编程,是无法理解一些攻防原理的,就像本次简单的SQL注入和XSS攻击,这些都是基于语法的漏洞来实现攻击的。后悔没有好好学啊
20155236范晨歌_Web基础的更多相关文章
- 20155236范晨歌_Web安全基础实践
20155236范晨歌_Web安全基础实践 目录 实践目标 WebGoat BurpSuite Injection Flaws Cross-Site Scripting (XSS) 总结 实践目标 ( ...
- 20155236范晨歌_MSF基础应用
20155236范晨歌_MSF基础应用 20155236范晨歌_MSF基础应用 目录 概述 MS08-067漏洞攻击 MS11-050漏洞攻击 MS10-087漏洞攻击 辅助模块 概述 MSF的六种模 ...
- 20155236范晨歌 Exp7 网络欺诈技术防范
20155236范晨歌 Exp7 网络欺诈技术防范 虚拟机经常崩= =,所以基本上做一个实验换一个... 遇到了一个简单的小问题老师帮忙解决了:虚拟机没联网... 一.基础问题回答 通常在什么场景下容 ...
- 20155236范晨歌_exp6信息搜集与漏洞扫描
20155236范晨歌_exp6信息搜集与漏洞扫描 目录 实践目标 信息搜集 漏洞扫描 总结 实践目标 (1)各种搜索技巧的应用 (2)DNS IP注册信息的查询 (3)基本的扫描技术:主机发现.端口 ...
- 20155236范晨歌_EXP3免杀原理与实践
20155236范晨歌_免杀原理与实践 免杀 概述 免杀,也就是反病毒(AntiVirus)与反间谍(AntiSpyware)的对立面,英文为Anti-AntiVirus(简写Virus AV),逐字 ...
- 20155236范晨歌 Exp1PC平台逆向破解及Bof基础实践
出现的问题及解决: 在下载execstack时,出现了下列签名无效的错误! 解决方案:发现是密钥过期了,将新的密钥填入apt-keyring 输入命令:apt-key adv --keyserver ...
- 20155236范晨歌 Exp2后门原理与实践
## 实验二 后门原理与实践 1.Windows获得Linux Shell 在windows下,打开CMD,使用ipconfig指令查看本机IP ncat.exe -l -p 5236监听本机的523 ...
- 20145221高其_Web基础
20145221高其_Web基础 目录 实践目标 Apache 前端编程 后端编程 PHP MYSQL & 后端 简单SQL注入与XSS 发帖和会话管理 总结 实践目标 (1)Web前端HTM ...
- 20145317彭垚_Web基础
20145317彭垚_Web基础 基础知识 Apache一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一.它快速.可靠并且可 ...
随机推荐
- springcloud 入门 3 (服务之间的调用)
服务调用: 指的是注册到服务端上的客户端之间数据的相互调用问题:服务与服务的通讯是基于http restful的 服务直接调用主要有两种实现:ribbon 和 feign ribbon是实现负载均衡 ...
- Mongodb的入门(4)mongodb3.6的索引
Mongodb的索引: 在介绍索引之前,再强调一下nosql数据库和sql数据库的区别: sql数据库:结构化数据,定好了表格后,每一行的内容都是结构化的 mongo:文档数据,表下的数据都可以有自己 ...
- go语言练习:通道、协程
1.通道的简单例子: package main import "fmt" func main() { channel:=make(chan string) //创建了一个通道对象 ...
- APP性能测试指标和测试方法
流量 常用方法 方法一:Android系统自带统计功能(总体流量数值) Proc/uid_stat/{UID}/tcp_snd和tcp_rcv UID是每个app安装时候分配的唯一编号用于识别该app ...
- c#创建文件( File.Create() )后对文件写操作出错的分析
在C#中,使用system.IO.File.Create()创建完一个文件之后,如果需要对这个文件进行写操作,会出现错误,提示你“这个文件正在被使用”. 原因是System.IO.File.Creat ...
- 华为MSTP负载均衡配置示例
以下内容摘自由华为公司授权并审核通过,今年元月刚刚出版上市的<华为交换机学习指南>一书:http://item.jd.com/11355972.html,http://product.da ...
- Window10 Linux子系统挂载磁盘
默认情况下, Linux子系统将当前winodws磁盘的盘全部挂载到/mnt/<disk_label>, 但一些新增的盘就需要手动做下了.. 官方参考文档 挂载磁盘 -- DrvFs 挂载 ...
- Kafka安装及使用
zookeeper安装 下载地址:https://www.apache.org/dyn/closer.cgi/zookeeper/ 我这里下载的是zookeeper-3.4.13版本,下载后解压在E: ...
- BZOJ5018:[SNOI2017]英雄联盟(背包DP)
Description 正在上大学的小皮球热爱英雄联盟这款游戏,而且打的很菜,被网友们戏称为「小学生」.现在,小皮球终于受不了网友们的嘲讽,决定变强了,他变强的方法就是:买皮肤! 小皮球只会玩N个英雄 ...
- 【转】Fiddler工作原理
原文章链接:Web代码网chinabit.org Fiddler是一个http调试代理,它能 够记录所有的你电脑和互联网之间的http通讯,Fiddler 可以也可以让你检查所有的http通讯,设置断 ...



