一点题外话

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

实验后问题回答

  • (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. PL/SQL自定义函数

    从SQL表达式中调用函数的限制 为了从SQL表达式中调用函数,一个用户定义函数必须: 是存储函数 只接受IN函数 只接收有受的SQL数据类型,而不接受PL/SQL数据类型 返回数据类型为有效的SQL数 ...

  2. lua打包exe【转】

    可以使用srlua这个工具把lua脚本打包成exe,提供了lua 5.2.5.1.5.0的版本对应的源码. 不过我懒得编译了,发现“白的菜”替懒人编译好了(感谢),点击下载. 解压后出现“luapac ...

  3. TCP报文

    源端口和目的端口: 各占16位 ,服务相对应的源端口和目的端口. 序列号: 占32位,它的范围在[0~2^32-1],序号随着通信的进行不断的递增,当达到最大值的时候重新回到0在开始递增.TCP是面向 ...

  4. javascript 调用cookies

    cookie   用来保存信息,并且与服务器互动,因此前端后端都可以使用cookie     值得一提的是:虽然cookie是以文件的形式存储在客户端的电脑上, 但浏览器只会让创建cookie的网站访 ...

  5. struts2 OGNL(Object-Graph Navigation Language) 井号,星号,百分号

    1.“#”主要有三种用途: 访问OGNL上下文和Action上下文,#相当于ActionContext.getContext():可以访问这几个ActionContext中的属性. parameter ...

  6. 看懂Oracle执行计划、表连接方式

    看懂Oracle执行计划  原文:https://www.cnblogs.com/Dreamer-1/p/6076440.html 最近一直在跟Oracle打交道,从最初的一脸懵逼到现在的略有所知,也 ...

  7. MSMQ研究

    开发过程记录如下: 1.   本机配置MSMQ ------控制面板-------启动或者关闭Windows功能----默认安装MSMQ即可 注意:本地安装后再VS中才能引用System.Messag ...

  8. leadJS初构建

    目录: 1. 面向对象篇 2. 数据结构篇 3. 全局函数篇 4. APICloud篇 1. 面向对象篇 JS原本无法进行程序员世界的面向对象编程,故此对JS封装成一种具有面向对象编程能力的JS. / ...

  9. 万恶之源 - Python数据类型二

    列表 列表的介绍  列表是python的基础数据类型之一 ,其他编程语言也有类似的数据类型. 比如JS中的数 组, java中的数组等等. 它是以[ ]括起来, 每个元素用' , '隔开而且可以存放各 ...

  10. [py][mx]django get方法返回login页面

    get方法返回login.html users/views.py def login(request): if request.method == "POST": pass eli ...