20145205 武钰 《网络对抗》Exp8 Web基础
一点题外话
- 本次实验我三号完成的,由于一些原因吧,一直没发博客,拖到了现在,这里说就是评判一下自己的懒惰。

实验后问题回答
(1)什么是表单
表单在网页中主要负责数据采集功能。
一个表单有三个基本组成部分:
表单标签:这里面包含了处理表单数据所用CGI程序的URL以及数据提交到服务器的方法。
表单域:包含了文本框、密码框、隐藏域、多行文本框、复选框、单选框、下拉选择框和文件上传框等。
表单按钮:包括提交按钮、复位按钮和一般按钮;用于将数据传送到服务器上的CGI脚本或者取消输入,还可以用表单按钮来控制其他定义了处理脚本的处理工作。(2)浏览器可以解析运行什么语言。
支持HTML(超文本标记语言)、XML(可扩展标记语言)以及ASP、PHP、Script、JavaScript、VBScript、Perl、Python、Java、JSP等众多脚本语言
(3)WebServer支持哪些动态语言
目前动态语音有:asp、php、cgi、lisp、Perl、python,Smalltalk、Ruby等
实验感想与体会
- 本次实验是结合之前所学的网页编程的技术,还有对于网页攻击技术的基本了解,以及调用数据库,建立连接。了解基本的SQL注入的原理,感觉收获最大的是讲一些知识结合起来使用,之前学的都是零散的知识,很多都是碎片化的知识来的,正好这几天也是我们课程设计的时候,正好将这里所用的思想转换一下,希望可以在课设中确定一个好的结果。
实验步骤
开启服务器
我们这次的实验是基于web服务实验,首先我们开启我们的APACHE服务器,然后在端口这里体现一下学号

之前我们验证一下服务端口是否正常开启,养成一个每步验证的好习惯。下图中可以看到我们服务端口开启了,端口号是5205.

然后我们登陆一下自己的主页,验证下是否可以正常访问本地主页,因为之后的实验是要对我们本地网页进行攻击。然后看到了之前实验我所copy的网页,也是我们喜闻乐见进行攻击的网页之一。

前端基本设计
之后我们要开始本次的实验中的主体,网页代码的编写了,首先我们明确一下,网页的编写分为前端和后台,我们点开一个网页看见的是前端,然后进行了一系列操作后,对于我们的操作进行执行和做出相应反应的是后台。然后我们先构建一个大致的前端登陆界面,实话说,这部分代码是我基本上copy了别的同学的。

然后跳转到这个前端页面,看下效果。

因为定义的提交按钮是提交,但是我们现在并没有关联的后台,所以会显示一个找不到对应网页。

之后介绍一下网页代码中的函数加载方式,我们可以使用javascript在静态网页上添加一些函数,来执行一些动态选择,具体内容上个学期课程有过详细介绍。
后台编写
首先,在试验前回答问题中有提到,编写后台有多种语言,之前学习的是JSP,这里我们用到的是PHP语言,首先测试一下copy的基本测试代码。

然后登陆到这个网页

之前要进行本次实验对于我来说最为麻烦的一个步骤数据库的调试和建立本次实验所要用的数据库表。为什么说他麻烦呢,下面再讲。首先先开启我们的MYSQL数据库

开启之后我的数据库并不能想LTC和别同学那样可以show一show自己数据库的基本设置啊,看看信息啊,反正我这里是不可以的,一直给我反馈错误号,然后我查的结果是语法错误吧,我也是醉了。之前开始建表。开始的时候自己输错了一个全半标点,然后就炸了,这里磨了我好久时间,后来直接推到重来了,还好解决了。
首先建立我们这次要使用的库

之后开始建具体的表,设置一下我们的DI号,用户名,密码,属性,然后敲对应的指令就好了。字段顺序随意。

最后将我们向刚才建立的表中添加用户。这里数据库部分就完成了。

代码合体
- 这里我们将后台和数据连接,然后把前端和后台连接一下,这样的话就完成了合体变形的过程,具体的代码如下
- 登陆界面
<html lang="en">
<head>
<meta charset="UTF-8">
<title>login</title>
<script type="text/javascript">
$("#login-button").click(function(event){
event.preventDefault();
$('form').fadeOut(500);
$('.wrapper').addClass('form-success');
});
function check(){
{
if(form.username.value == "")//如果用户名为空
{
alert("您还没有填写用户名!");
form.username.focus();
return false;
}
if(form.pass.value == "")//如果密码为空
{
alert("您还没有填写密码!");
myform.pass.focus();
return false;
}
}
</script>
</head>
<body>
<div class="wrapper">
<div class="container">
<h1>Welcome</h1>
<form name='form' class="form" method='get' action='login.php' onSubmit="return check()">
<input type="text" placeholder="Username" name='username'>
<input type="password" placeholder="Password" name='password'>
<button type="submit" id="login-button" name='submit' value='submit'>Login</button>
<button type="submit" id="register-button"><a href="register.html" class="cc">register</a></button>
</form>
</div>
</div>
</body>
</html>
- 后台代码
<?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", "p@ssw0rrd", "wy_5205");
/* check connection */
if ($mysqli->connect_errno) {
printf("Connect failed: %s\n", $mysqli->connect_error);
}
else echo "天气好热啊,蚊子好烦啊,病毒实践还没做啊<br>";
if ($result1= $mysqli->multi_query($query_str))
$mysqli->close();
$mysqli = new mysqli("127.0.0.1", "root", "20145205", "wy_5208");
/* 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();
?>
尝试登陆一下,成功和失败主要看下面的反馈信息。

登陆成果

登陆失败

基本SQL注入
首先先使用下刘念老师很早前讲的永真式注入,注意输入注入语句的格式。

注入成果,连接到了我们的后台网页

其实SQL注入就是利用我们的判别函数的判别漏洞进行攻击,如果真则允许登陆,但是这个真是指的逻辑真,也是就说和本地数据库中的用户名、密码匹配是真,跳过了匹配过程返回一个真值也是真,这就是SQL注入的基本原理。可以通过输入中只有数字和字母来避免SQL注入,但是手段还是很多。
XSS攻击
跨站脚本攻击即XSS,我看来就是在网页上的缓存区溢出攻击,输入一段指令,使其在写入到网页中,进而执行,然后调取我们需要的文件,或是改写网页功能。下面是我做的测试,抓取我的网页目录下的一个文档。

因为文档不能直接加载,所以无法直接显示。

右键文档所在的位置,进入文档进行查看,我们也可以下载或是执行别的指令。

一句英文格言送给大家共勉。望诸君把握未来,活在当下,切勿沉溺于昔日云云。

往日逝逝,今日陶陶,他日未得知。
20145205 武钰 《网络对抗》Exp8 Web基础的更多相关文章
- 20145326蔡馨熤《网络对抗》—— Web基础
20145326蔡馨熤<网络对抗>—— Web基础 1.实验后回答问题 (1)什么是表单. 表单是一个包含表单元素的区域,表单元素是允许用户在表单中输入信息的元素,表单在网页中主要负责数据 ...
- 20155305《网络对抗》Web基础
20155305<网络对抗>Web基础 实验过程 Web前端:HTML 使用netstat -aptn查看80端口是否被占用(上次实验设置为Apache使用80端口),如果被占用了就kil ...
- 20155307实验八 《网络对抗》 Web基础
20155307实验八 <网络对抗> Web基础 实验过程 Web前端:HTML 使用netstat -aptn查看80端口是否被占用(上次实验设置为Apache使用80端口),如果被占用 ...
- 20155311《网络对抗》Web基础
20155311<网络对抗>Web基础 实验过程 Web前端:HTML 使用netstat -aptn查看80端口是否被占用(上次实验设置为Apache使用80端口),如果被占用了就kil ...
- 20145216史婧瑶《网络对抗》Web基础
20145216史婧瑶<网络对抗>Web基础 实验问题回答 (1)什么是表单 表单在网页中主要负责数据采集功能.一个表单有三个基本组成部分: 表单标签.表单域.表单按钮. (2)浏览器可以 ...
- 20145227鄢曼君《网络对抗》Web基础
20145227鄢曼君<网络对抗>Web基础 实验内容 (1)Web前端HTML (2)Web前端javascipt (3)Web后端:MySQL基础:正常安装.启动MySQL,建库.创建 ...
- 20145312袁心《网络对抗》Web基础实践
20145312袁心<网络对抗>Web基础实践 问题回答 1.什么是表单: 表单在网页中主要负责数据采集功能. 一个表单有三个基本组成部分: 表单标签:这里面包含了处理表单数据所用CGI程 ...
- 20145321 《网络对抗》 Web基础
20145321 <网络对抗> Web基础 基础问题回答 (1)什么是表单 表单在网页中主要负责数据采集功能,一个表单有三个基本组成部分:表单标签——这里面包含了处理表单数据所用CGI程序 ...
- 20145330 《网络对抗》 Web基础
20145330 <网络对抗> Web基础 1.实践内容 (1)Web前端HTML (2)Web前端javascipt (3)Web后端:MySQL基础:正常安装.启动MySQL,建库.创 ...
- 20144303石宇森 《网络对抗》 WEB基础实践
20144303石宇森 <网络对抗> WEB基础实践 实验后回答问题 一.什么是表单 表单是一个包含表单元素的区域.用form来定义. HTML是静态显示网页的,无法跟服务器进行交互,所以 ...
随机推荐
- POJ 1556 - The Doors - [平面几何+建图spfa最短路]
题目链接:http://poj.org/problem?id=1556 Time Limit: 1000MS Memory Limit: 10000K Description You are to f ...
- linux系统下top命令参数详解
简介 top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器. top显示系统当前的进程和其他状况,是一个动态显示过程,即可以通过用户按 ...
- GraphLab GraphLab和MapReduce的区别
https://turi.com/ GraphLab和MapReduce的区别 https://baike.baidu.com/item/GraphLab/16423125 2. GraphLab和M ...
- ElasticSearch报 EsThreadPoolExecutor[search, queue capacity = 1000, org.elasticsearch.common.util.concurrent.EsThreadPoolExecutor@c0efba
ElasticSearch报以下错误的解决办法: "type": "es_rejected_execution_exception", "reason ...
- idea启动tomcat后访问项目报java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet
一.报错“java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet” 1.File --- ...
- HashMap实现原理分析(面试问题:两个hashcode相同 的对象怎么存入hashmap的)
1. HashMap的数据结构 数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端. 数组 数组存储区间是连续的,占用内存严重,故空间复杂的很大.但数组的二分查找时间复杂度小,为O(1 ...
- 如果要写php扩展啥的, 要看什么?
1.写PHP扩展并不难 有一定C语言基础即可.切记一定要在Linux平台下开发,不要用Windows 这里有一篇博文,可以看下http://rango.swoole.com/archives/152 ...
- Shuffle'm Up---poj3087
题目链接 题意:有两个字符串s1,s2:经过交叉问是否得到字符串s,不能输出-1,能就输出交叉的次数 每次重组的串都是s2开始,重新组合时,前面一半是s1,后一半s2: #include<std ...
- kettle中源和目标表结构不一致的情况处理
创建数据仓库的过程中,往往会遇到这样的问题,例如:源表由于业务原因新增了字段,而ETL程序中是按照之前的源表结构进行抽取的,那么如果不重新构建ETL程序,新的指标就不会流入DW,问题如下图所示 创建了 ...
- 上传指定url文件到阿里云oss
好处是不用下载到本地,也不用删除本地文件.省事! 先下载阿里云官方代码 https://github.com/aliyun/aliyun-oss-csharp-sdk 引用其中的 aliyun-os ...