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是静态显示网页的,无法跟服务器进行交互,所以 ...
随机推荐
- Python面向对象:继承和多态
继承与多态简介: 继承可以把父类的所有功能都直接拿过来,这样就不必重零做起,子类只需要新增自己特有的方法,也可以把父类不适合的方法覆盖重写. 动态语言的鸭子类型特点决定了继承不像静态语言那样是必须的. ...
- 查看mobileprovision信息
security cms -D -i ***********.mobileprovision
- ios-多语言版本开发(三)(转载)
写在前面 iOS 多语言版本的开发(二)中我们实现了如何让用户自己去切换系统语言的功能,我们还写了Demo 以供辅助学习:但是,继以上两篇文章都是建立在项目刚刚启动或启动不久,项目中存在的中文字符串 ...
- Thymeleaf模板引擎的初步使用
在springboot中,推荐使用的模板引擎是Thymeleaf模板引擎,它提供了完美的Spring MVC的支持.下面就简单的介绍一下Thymeleaf模板引擎的使用. 在controller层中, ...
- 学习计划 mysql 整数类型后面的数字,是什么意思?
Mysql中定义整数类型的数字,是指定这个字段的长度么? 比如 INT(10) 10代表10个字节么?还是只能存储10为长度的数字内容? 今天本来想学习下字符类型,一下子发现了这个,感觉好有趣. -- ...
- MySQL事务隔离级别详解(转)
原文: http://xm-king.iteye.com/blog/770721 SQL标准对事务定义了4种隔离级别,包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的.低级别的隔 ...
- python-面向对象-09_类属性和类方法
类属性和类方法 目标 类的结构 类属性和实例属性 类方法和静态方法 01. 类的结构 1.1 术语 —— 实例 使用面相对象开发,第 1 步 是设计 类 使用 类名() 创建对象,创建对象 的动作有两 ...
- 跨平台的移动应用开发框架-Sencha Touch
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/tommychen1228/article/details/32959529 近期决定转以日常技术类文 ...
- 003-Nginx 设置Header 获取真实IP
1.X-Forwarded-For的定义: X-Forwarded-For:简称XFF头,它代表客户端,也就是HTTP的请求端真实的IP,只有在通过了HTTP 代理或者负载均衡服务器时才会添加该项.它 ...
- create-react-app创建react项目失败!
create-react-app my-app 用管理员运行cmd,问题依然. 打开日志,看到错误详细信息如下 32189 verbose unlock done using C:\Users\fen ...