一点题外话

  • 本次实验我三号完成的,由于一些原因吧,一直没发博客,拖到了现在,这里说就是评判一下自己的懒惰。

实验后问题回答

  • (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基础的更多相关文章

  1. 20145326蔡馨熤《网络对抗》—— Web基础

    20145326蔡馨熤<网络对抗>—— Web基础 1.实验后回答问题 (1)什么是表单. 表单是一个包含表单元素的区域,表单元素是允许用户在表单中输入信息的元素,表单在网页中主要负责数据 ...

  2. 20155305《网络对抗》Web基础

    20155305<网络对抗>Web基础 实验过程 Web前端:HTML 使用netstat -aptn查看80端口是否被占用(上次实验设置为Apache使用80端口),如果被占用了就kil ...

  3. 20155307实验八 《网络对抗》 Web基础

    20155307实验八 <网络对抗> Web基础 实验过程 Web前端:HTML 使用netstat -aptn查看80端口是否被占用(上次实验设置为Apache使用80端口),如果被占用 ...

  4. 20155311《网络对抗》Web基础

    20155311<网络对抗>Web基础 实验过程 Web前端:HTML 使用netstat -aptn查看80端口是否被占用(上次实验设置为Apache使用80端口),如果被占用了就kil ...

  5. 20145216史婧瑶《网络对抗》Web基础

    20145216史婧瑶<网络对抗>Web基础 实验问题回答 (1)什么是表单 表单在网页中主要负责数据采集功能.一个表单有三个基本组成部分: 表单标签.表单域.表单按钮. (2)浏览器可以 ...

  6. 20145227鄢曼君《网络对抗》Web基础

    20145227鄢曼君<网络对抗>Web基础 实验内容 (1)Web前端HTML (2)Web前端javascipt (3)Web后端:MySQL基础:正常安装.启动MySQL,建库.创建 ...

  7. 20145312袁心《网络对抗》Web基础实践

    20145312袁心<网络对抗>Web基础实践 问题回答 1.什么是表单: 表单在网页中主要负责数据采集功能. 一个表单有三个基本组成部分: 表单标签:这里面包含了处理表单数据所用CGI程 ...

  8. 20145321 《网络对抗》 Web基础

    20145321 <网络对抗> Web基础 基础问题回答 (1)什么是表单 表单在网页中主要负责数据采集功能,一个表单有三个基本组成部分:表单标签——这里面包含了处理表单数据所用CGI程序 ...

  9. 20145330 《网络对抗》 Web基础

    20145330 <网络对抗> Web基础 1.实践内容 (1)Web前端HTML (2)Web前端javascipt (3)Web后端:MySQL基础:正常安装.启动MySQL,建库.创 ...

  10. 20144303石宇森 《网络对抗》 WEB基础实践

    20144303石宇森 <网络对抗> WEB基础实践 实验后回答问题 一.什么是表单 表单是一个包含表单元素的区域.用form来定义. HTML是静态显示网页的,无法跟服务器进行交互,所以 ...

随机推荐

  1. 11.23CSS笔记

    每一步的编写过程都在代码里面书写了,暂且记录下来 <!DOCTYPE html> <html lang="en"> <head> <met ...

  2. CodeForces - 55C Pie or die 想法题(猜程序)

    http://codeforces.com/problemset/problem/55/C 题意:一个博弈. 题解:瞎猜,目前不清楚原理 #include<iostream> #inclu ...

  3. python3.5 安装python3-tk

    https://blog.csdn.net/qq_18293213/article/details/74483516 在python3.5下安装好matplotlib后,准备显示一张图片测试一下,但是 ...

  4. 新建虚拟机_XP系统(二)

    准备工作:按照<新建虚拟机_XP系统(一)>中操作步骤创建好虚拟机 1.启动虚拟机进入如下界面.新建分区.选择[6]运行DiskGenius工具 2.选择快速分区.可以自定义 3.新建分区 ...

  5. 新建虚拟机_XP系统(一)

    准备工作:(1)安装VMware (2)下载系统镜像文件 1.新建虚拟机 2.下一步,选择“稍后安装操作系统” 3.选择操作系统类型和版本 4.设置虚拟机名称和安装位置 (安装路径空间要足够大) 5. ...

  6. [python+opencv] ROI(Range Of Interest)与泛洪填充

    python+opencv3.3视频教学 基础入门笔记(贾志刚老师) https://www.bilibili.com/video/av24998616/?p=8 ROI(Range Of Inter ...

  7. ChinaTest测试感悟

    这次去北京参加ChinaTest大会,听了各位大师和同行的心得和感悟,收获颇多.很喜欢这样的大会,可以听到测试的各种声音各种观点.当没有对错时,需要思考的就是怎样采取最适合当前环境的策略.言归正传,谈 ...

  8. Linux新建用户 useradd&groupadd

    建立一个新组,并设置组ID加入系统:#groupadd -g 1000 sparkgroup #useradd -u 2000 -g sparkgroup sparkuser #mkdir -p /a ...

  9. 【Python】小练习

    1.python爬虫 (1)抓取一个新闻网上含有某一关键字的新闻,http://internasional.kompas.com/就是这个网站上面所有内容含有THAAD这个关键词的新闻 (2)爬取大众 ...

  10. 搭建私有npm私库(使用verdaccio)

    搭建 npm 离线服务器 为什么要搭建npm 服务器 原因: 公司内部开发的私有包,统一管理,方便开发和使用 安全性,由于公司内部开发的模块和一些内容并不希望其他无关人员能够看到,但是又希望内部能方便 ...