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,我看来就是在网页上的缓存区溢出攻击,输入一段指令,使其在写入到网页中,进而执行,然后调取我们需要的文件,或是改写网页功能。下面是我做的测试,抓取我的网页目录下的一个文档。

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

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

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

  • 往日逝逝,今日陶陶,他日未得知。

posted @ 2017-05-10 20:01  20145205武钰  阅读(240)  评论(0编辑  收藏  举报