20145120《网络对抗》Web基础

回答问题

(1)什么是表单

表单在网页中主要负责数据采集功能。一个表单有三个基本组成部分: 表单标签:这里面包含了处理表单数据所用CGI程序的URL以及数据提交到服务器的方法。 表单域:包含了文本框、密码框、隐藏域、多行文本框、复选框、单选框、下拉选择框和文件上传框等。 表单按钮:包括提交按钮、复位按钮和一般按钮;用于将数据传送到服务器上的CGI脚本或者取消输入,还可以用表单按钮来控制其他定义了处理脚本的处理工作。

(2)浏览器可以解析运行什么语言

HTML、XML等标记语言,还有Javascript、PHP等脚本语言等等

(3)WebServer支持哪些动态语言

Javascript、PHP、servlet、ASP等等

实验总结与体会

以前SQL注入以及XSS都听说过很多次了,这次实验总算切实地体验了一次什么是SQL注入,以及XSS。让我们知道了防范SQL注入和XSS的重要性,我了解到如何防范SQL注入和XSS。对SQL注入,用户输入的数据一定要经过处理再执行数据库的相关操作,这需要很多经验。对XSS,同样要处理用户输入的数据,在PHP中,POST方式传来的数据需要用trim();stripslashes();htmlspecialchars();处理之类的。

虽然实验期间遇上了很多麻烦,比之前的实验花了更多时间,但是感觉比想象中稍微容易一点,可能是因为之前选修过《数据库原理与安全》和《网络安全编程基础》吧,而且课题负责人的博客也是巨大的助力。

应为之前学过《数据库原理与安全》和《网络安全编程基础》,HTML和MySQL我都有点基础感觉做起来不难。PHP以前完全没接触过,犯了很多很基础的错误,就是在这里花了很多时间学语法。

实验内容

Web前端HTML表单

先启动apache服务(一开始忘了改hostname)

发现80端口已经被占用,那就修改配置文件,改成5120端口好了,再次启动apache,用浏览器打开127.0.0.1:5120可以看到上次实践写的页面,说明apache正常工作中

/var/www/html/目录下新建文件5120.html,用vim编写一个简单的带表单页面,之后可以用浏览器访问127.0.0.1(或localhost):5120/文件名访问该文件,期间我发现用vim写这个真是不顺手,修改起来很麻烦,我应该先在eclipse写好粘过去

Web前端Javascript

用Javascript写一个检查用户名是否为空的函数,点击提交按钮时执行,这次我机智地先用eclipse写好测试无误后粘贴到虚拟机

可惜粘完发现中文乱码了

改一下,加上一句用utf-8编码

测试成功

以下最终版5120.html:

  1. <html>
  2. <head>
  3. <meta charset="utf-8">
  4. <title>5120_Login</title>
  5. <script type="text/javascript">
  6. function checkUname(){
  7. var uname=document.getElementById("uname");
  8. if(uname.value==""){
  9. alert("用户名不能为空!");
  10. }
  11. }
  12. </script>
  13. </head>
  14. <body>
  15. <h1>输用户名密码:</h1>
  16. <form name="myform" action="5120.php" method="post">
  17. <table>
  18. <tr>
  19. <td align="right">用户名:</td>
  20. <td><input type="text" name="uname" id="uname"/></td>
  21. </tr>
  22. <tr>
  23. <td align="right">密码:</td>
  24. <td><input type="password" name="pw" id="pw"/></td>
  25. </tr>
  26. </table>
  27. <input type="submit" value="登录" onclick="checkUname()"/>
  28. </form>
  29. </body>
  30. </html>

Web后端MySql

/etc/init.d/mysql start启动Mysql服务

mysql -u root -p登录,默认密码p@ssw0rd

太复杂了,当然是选择update它

  1. use mysql;
  2. UPDATE user SET password=PASSWORD("123456(新密码)") WHERE user='root';
  3. flush privileges;

退出重进,密码已改

然后,新建数据库,新建数据表,插入数据,最后查询一下试试

  1. create schema `hxx5120`; #新建数据库
  2. create table `hxx5120`.`users` ( #新建数据表
  3. `uid` int not null comment '',
  4. `uname` varchar(20) comment '',
  5. `pw` varchar(256) comment '', #开始的时候把长度设太小了结果后面用条件查询where pw=***出问题,查不出来
  6. primary key (`uid`) comment '');
  7. insert into users values(1,'aaa',password("5120")); #插入数据
  8. select * from users; #查询
  9. select * from users where uname='aaa' and pw=password('5120');

Web后端PHP

新知识,老套路,先写个helloworld试试,简单

再试试得到表单传过来的元素,Pass

Web基础综合运用

PHP连接数据库,没什么问题,然后数据查询,我很有自知之明的选择先输出要执行的sql语句,一尝试果然就有失了智似得错,默默地把格式改回'{$***}'

然后又发现下面调用用户名的时候打错成了uanme,最后成功

以下最终版5120.php:

  1. <html>
  2. <head>
  3. <title>5120_php</title>
  4. </head>
  5. <body>
  6. <?php
  7. $uname = $_POST["uname"];
  8. $pw = $_POST["pw"];
  9. $servername = "localhost";
  10. $username = "root";
  11. $password = "123456";
  12. $dbname = "hxx5120";
  13. $conn = new mysqli($servername, $username, $password, $dbname);
  14. if ($conn->connect_error) {
  15. die("连接失败: " . $conn->connect_error);
  16. }
  17. $sql = "SELECT * FROM users WHERE uname='{$uname}' AND pw=PASSWORD('{$pw}');";
  18. //echo $sql;
  19. $result = $conn->query($sql);
  20. if ($result->num_rows > 0) {
  21. echo "登录成功\n欢迎你 $uname!";
  22. } else {
  23. echo "用户名或密码错误";
  24. }
  25. $conn->close();
  26. ?>
  27. </body>
  28. </html>

sql注入

尝试了永真式注入,在用户名处输入' or 1=1#,sql语句就变成了SELECT * FROM users WHERE uname='' or 1=1# AND pw=PASSWORD('{$pw}');

密码随便输,因为后面都被注释掉了,而1=1是永远成立的,总是能登录上去。

XSS

遗憾,早知道前面就不用POST方法了,因为POST方法不通过url传表单数据,能力有限,没办法只能重新做页面,分别copy一下5120.html,5120.php为x5120.html,x5120.php

不上代码了,和之前基本一样就是改成GET方法,方便我进行XSS攻击,

找了张图片power.jpg放到/var/www/html/目录下

之后在x5120.html输入用户名处输入<img src="power.jpg" />你们对力量一无所知</a>,结果如下

20145120黄玄曦《网络对抗》Web基础的更多相关文章

  1. 20145120黄玄曦《网络对抗》MSF基础应用

    20145120黄玄曦<网络对抗>MSF基础应用 准备工作 本来决定就是老师提供的XP虚拟机了,做着做着发现因为打补丁以及语言的问题,需要另外的虚拟机. 求来了不那么健壮的虚拟机,环境如下 ...

  2. 网络对抗——web基础

    网络对抗--web基础 实践内容 (1)Web前端HTML (2)Web前端javascipt (3)Web后端:MySQL基础:正常安装.启动MySQL,建库.创建用户.修改密码.建表 (4)Web ...

  3. 20145120黄玄曦《网络对抗》Web安全基础实践

    20145120黄玄曦<网络对抗>Web安全基础实践 回答问题 (1)SQL注入攻击原理,如何防御 SQL注入原理简单地说大概是,通过构造特殊的SQL命令提交表单,让服务器执行构造的恶意S ...

  4. 20145120黄玄曦 《java程序设计》 寒假学习总结

    1和2.我对未来规划不多,我认为好好学习积累知识能帮助我应对未来的挑战,这是我的学习动力之一,此外,了解新知识满足好奇心也是我的主要的学习动力. 3.我认为专业课学习比公务员考试重要,我认为专业知识是 ...

  5. 20145306 张文锦 网络攻防 web基础

    20145306 网络攻防 web基础 实验内容 WebServer:掌握Apache启停配置修改(如监听端口)前端编程:熟悉HTML+JavaScript.了解表单的概念编写不同的HTML网页,放入 ...

  6. 20145234黄斐《网络对抗技术》实验九、Web安全基础实践

    PS:我是分了两次做的这次试验,第二次实验的时候电脑出了一点问题熄火了……原本后面的是有图的结果博客没保存图没了…… WebGoat WebGoat是由著名的OWASP负责维护的一个漏洞百出的J2EE ...

  7. 20145234黄斐《网络对抗技术》实验八、Web基础

    Apache 先通过apachectl start命令开启Apach,使用netstat -aptn命令查看端口占用: 因为端口号80已经被占用(上次实验设置的),所以先修改/etc/apache2/ ...

  8. 20145334赵文豪网络对抗Web安全基础实践

    1.SQL注入攻击原理,如何防御? SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意SQL命令的目的. 对于SQL注入攻击的防范,我觉 ...

  9. 20145234黄斐《网络对抗技术》实验五,MSF基础应用

    MSF的六种模块 渗透攻击模块(Exploit Modules)渗透攻击是指由攻击者或渗透测试者利用一个系统.应用或服务中的==安全漏洞==,所进行的攻击行为. 辅助模块(Auxiliary Modu ...

随机推荐

  1. C# Expression 树转化为SQL语句(一)

    sql有有四中基本语句,分别是增删改查,在建立model后如何生成这四中sql语句,降低开发时间. 我们先模拟出一张学生表: public class Student { public int id ...

  2. c# 可变数目参数params实例

    一般来说,参数个数都是固定的,定义为集群类型的参数可以实现可变数目参数的目的,但是.NET提供了更灵活的机制来实现可变数目参数,这就是使用params修饰符 一般来说,参数个数都是固定的,定义为集群类 ...

  3. Material design之New Widgets(RecyclerView CardView)

    New Widgets:提供了两个新的控件 RecyclerView CardView 这两个控件包含在了Android L的support library中, 他们可以用于显示复杂的布局而且都默认采 ...

  4. AWS系列-申请Redis

    1.1 打开aws控制台,可以直接搜索redis 1.2 进入redis控制面板 点击启动缓存集群(这个只是启动创建的意思,不是启动下面创建好的node.我也不懂为啥翻译过来是这个意思...) 1.3 ...

  5. 存储过程根据ouID获取IntlPerson数据表

    /****************************************************************************** ** Name: usp_base_Ge ...

  6. ios APP 在 waiting for review时重新上传程序

    今天上传程序后发现了一个挺大的bug,想重新上传app,于是搜了一下,现记录一下: 点击details进入后在link点击binary details,进入之后点击右上角reject this bin ...

  7. 【BZOJ4584】[Apio2016]赛艇 DP

    [BZOJ4584][Apio2016]赛艇 Description 在首尔城中,汉江横贯东西.在汉江的北岸,从西向东星星点点地分布着个划艇学校,编号依次为到.每个学校都拥有若干艘划艇.同一所学校的所 ...

  8. Avalondock 第四步 边缘停靠

    前一章介绍了分组功能,这一章主要介绍细节信息,LayoutRoot的side属性 LayoutRoot包含四个属性,LeftSide,RightSide,TopSide,BottomSide,分别用于 ...

  9. 外观模式(Facade) Adapter及Proxy 设计模式之间的关系 flume

    小结: 1. 外观模式/门面模式 Facade  往是多个类或其它程序单元,通过重新组合各类及程序单元,对外提供统一的接口/界面. Proxy(代理)注重在为Client-Subject提供一个访问的 ...

  10. python系列十七:Python3 标准库概览

    #!/usr/bin/python #-*-coding:gbk-*- #Python3 标准库概览'''操作系统接口os模块提供了不少与操作系统相关联的函数.建议使用 "import os ...