20145239杜文超《网络对抗》- Web基础

基础问题回答

  1、什么是表单?

  • 表单是一个包含表单元素的区域。

  • 表单元素是允许用户在表单中(比如:文本域、下拉列表、单选框、复选框等等)输入信息的元素。

  • 表单使用表单标签(<form>)定义。

  2、浏览器可以解析运行什么语言?

  • 支持HTML(超文本标记语言)、XML(可扩展标记语言)以及Python、PHP、JavaScript、ASP等众多脚本语言。

  3、WebServer支持哪些动态语言?

  • 常用的有ASP语言,PHP语言和JSP语言。

实验总结与体会

  本次实验具有一定的难度。理解前端html以及JS和后台php以及数据库的关系很重要。好在上学期有学过网络安全编程基础,对于html语言还是比较熟悉,特别是登陆页面的html代码也基本上了然于心了。PHP脚本是我第一次接触,挺生疏的,代码基本上完全参照了同学和老师的,就这样在后面SQL注入需要一次执行多条命令的时候还是出了问题,加了muti之后无法成功注入,耽误了好几个小时。数据库以前用的是access这次用的是mysql,没有图形化界面在命令行下使用,也是一次学习的过程,而且我觉得学好数据库对以后也是很有帮助的。

实践内容

前端HTML

输入apachectl start开启Apache。开启失败,使用netstat -aptn查看端口占用情况。

vi /etc/apache2/ports.conf修改端口,此处我设置成了自己的学号。

再次查看apache端口已改为5239。

Apache服务开启后,我们在浏览器中输入localhost:5239进行查看.看到了上次克隆的网页,说明apache工作正常。

编写一个含有表单的html。

浏览器里简单看一下结果,因为我们的action填的是#,所以现在输入如何东西都不会跳转,只会回到当前页面。

前端javascipt

1.相关概念:JavaScript是一种广泛用于客户端Web开发的脚本语言,常用来给HTML网页添加动态功能,比如响应用户的各种操作。
2.文档对象模型(Document Object Model,简称DOM,是W3C组织推荐的处理可扩展标志语言的标准编程接口。

此时我们重新编写刚才的html文件,使其具有个验证用户名、密码的规则。

后台MySQL

输入/etc/init.d/mysql start指令开启mysql服务。输入mysql -u root -p登陆,初始密码p@ssw0rd。

输入use mysql;进入数据库,输入update user set password=PASSWORD("新密码") where user='root';修改密码,此处我改为了自己的学号。

最后要输入flush privileges;更新权限。quit退出后尝试用新密码登陆,成功进入即密码修改成功。

使用create database 库名;建立一个数据库。使用show databases查看存在的数据库,然后use dwc5239。

在我们的数据库里建一个新数据表,create table 5239table(username VARCHAR(50),password VARCHAR(50),telephone VARCHAR(11));

输入show tables查看已有的数据表。输入insert into 表名 values('值1','值2','值3'...);给数据表中插入数据,包括三项用户名,密码,联系电话。

插入完可以使用select * from 5239table 查看一下。

我们也可以使用如下命令增加mysql新用户:grant select(insert,update,delete) on 数据库.* to 用户名@登录主机 identified by "密码";

用刚注册的用户尝试登陆一下,登陆成功!

后台PHP测试

vi /var/www/html/dwc_test.php新建一个php测试文件。

在浏览器输入localhost:5239/dwc_test.php测试一下,如图所示,测试成功。

测试完成后,我们可以利用PHP和MySQL结合之前编的登录网页进行简单的用户身份认证。结合老师给出的代码,vi login.php修改几个部分:

<?php

$uname=($_POST["username"]);
$pwd=($_POST["password"]); /* echo $uname; */ $query_str="SELECT * FROM 5239table where username='{$uname}' and password='{$pwd}';"; /* echo "<br> {$query_str} <br>";*/ $mysqli = new mysqli("127.0.0.1", "root", "20145239", "dwc5239"); /* 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(); ?>

root:MySQL的用户名

20145239:登录密码

dwc5239:数据库的库名

开头两行代码使用post而不是get,记得sql语句是从5239table里比较数据。

$uname=($_POST["username"]);
$pwd=($_POST["password"]);

把html里的action填写上login.php,直接跳转。

大功告成!快来测试一下,在浏览器输入localhost:5239/test5239.html。

在登录页面中输入数据库中存有的用户名和密码并点击登录进行用户认证,如果登录成功,如下所示。

登陆失败时,如下显示。

SQL注入

  SQL注入是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
具体来说,它是利用现有应用程序,将(恶意的)SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。
简单地说,SQL注入的产生原因通常是将用户输入的字符串,当成了 “sql语句” 来执行。

在账户输入框中输入' or 1=1#,密码随便敲。

合成语句select * from zn where username='' or 1=1#' and password=''

#相当于注释符,会把后面的内容都注释掉,而1=1是永真式,所以这个条件肯定恒成立,所以能够成功登陆。

在php脚本里,把if ($result = $mysqli->query($query_str))改为$result = $mysqli->multi_query($query_str)

实现执行多个sql语句,便可以通过SQL注入将用户名和密码保存在数据库中。

输入如下命令。相当于SELECT * FROM 5239table WHERE username='';、insert into 5239table values('lsj','5240','17888811781');

其实我当时是失败了。后来我使用了罗天晨同学的php代码,注入成功了,具体可以参照她的博客以及代码托管:http://www.cnblogs.com/alovera/p/6740640.html

用注入的信息登陆一下,成功了。

XSS攻击测试

  XSS攻击:跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆。故将跨站脚本攻击缩写为XSS。XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。比如这些代码包括HTML代码和客户端脚本。攻击者利用XSS漏洞旁路掉访问控制——例如同源策略(same origin policy)。这种类型的漏洞由于被骇客用来编写危害性更大的phishing攻击而变得广为人知。对于跨站脚本攻击,黑客界共识是:跨站脚本攻击是新型的“缓冲区溢出攻击“,而JavaScript是新型的“ShellCode”。

在用户名下输入<img src="111.png" />20145239</a>,密码随便敲。

登陆后,它会显示/var/www/html目录下的那张图片。

20145239杜文超《网络对抗》- Web基础的更多相关文章

  1. 20145239杜文超《网络对抗》- Web安全基础实践

    20145239杜文超<网络对抗>- Web安全基础实践 基础问题回答 (1)SQL注入攻击原理,如何防御? SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查 ...

  2. 20145239杜文超《网络对抗》- shellcode注入&Return-to-libc攻击深入

    20145239杜文超<网络对抗>- shellcode注入&Return-to-libc攻击深入 shellcode基础知识 Shellcode是一段代码,作为数据发送给受攻击服 ...

  3. 20145239杜文超《网络攻防》- MSF基础应用

    20145239杜文超<网络攻防>- MSF基础应用 基础问题回答 1.用自己的话解释什么是exploit,payload,encode? exploit:实现攻击行为的主体,但没有载荷只 ...

  4. 20145239 杜文超 实验四 Android开发基础

    20145239实验四 Android开发基础 实验内容 基于Android Studio开发简单的Android应用并部署测试 了解Android组件.布局管理器的使用 掌握Android中事件处理 ...

  5. 网络对抗——web基础

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

  6. 20145239杜文超 实验五 Java网络编程

    20145239 实验五 Java网络编程 实验内容 组队,一人服务器,一人客户端. 下载加解密代码,先编译运行代码,一人加密一人解密,适当修改代码. 然后集成代码,一人加密后通过TCP发送,加密使用 ...

  7. 20145239杜文超 《Java程序设计》第10周学习总结

    20145239 <Java程序设计>第10周学习总结 教材学习内容总结 Java的网络编程 网络编程 网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据. 网络概述 1.计算机 ...

  8. 20145239杜文超 《Java程序设计》第8周学习总结

    20145239 <Java程序设计>第8周学习总结 教材学习内容总结 通用API 日志API 1.java.util.logging包提供了日志功能相关类与接口,使用日志的起点是logg ...

  9. 20145239杜文超 《Java程序设计》实验二 Java面向对象程序设计实验报告

    20145239 <Java程序设计>实验二 Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S. ...

随机推荐

  1. Mysql闪回技术之 binlog2sql

    1.下载 https://github.com/danfengcao/binlog2sql http://rpmfind.net Search: python-pip pip 是一个Python包管理 ...

  2. android中TabHost和RadioGroup

    android底部菜单应用 博客分类: android--UI示例 TabHostMenuRadioGroupButton  在android中实现菜单功能有多种方法. Options Menu:用户 ...

  3. QQ宠物怀念版H5

    <QQ宠物>相伴十三载 哇!明信片邮到了!!开心ヽ(○^㉨^)ノ♪ 大乐斗Ⅱ 怀念一波...

  4. linux下的shell 快捷键

    Ctrl+p重复上一次命令Ctrl+a跳到第一个字符前Ctrl+x同上但再按一次会从新回到原位置Ctrl+b前移一个字符不删除字符情况下Ctrl+h删除前一个字符Ctrl+u删除提示符前的所有字符Ct ...

  5. HTML5的兴起与4G网络的出现,能否够终止移动端的持续下滑走向

    HTML5的兴起与4G网络的出现,能否够终止移动端的持续下滑走向. 每当大家谈起互联网的未来的时候,多半谈及的是云.大数据.SAAS.仿佛要将一切摒弃.而当谈起移动互联网的时候.却坚持觉得NATIVE ...

  6. [ACM] hdu 3923 Invoker (Poyla计数,高速幂运算,扩展欧几里得或费马小定理)

    Invoker Problem Description On of Vance's favourite hero is Invoker, Kael. As many people knows Kael ...

  7. Android ADB 命令链接模拟器出现 daemon not running 解决方法

    用adb命令链接远程模拟器 有时候会遇到如下问题: C:Documents and SettingsAdministrator>adb connect 192.168.0.183 * daemo ...

  8. ADB简易安装方法

    ADB安装方法: 1. 下载ADB程序 下载地址: 链接:https://pan.baidu.com/s/1CfQL51pBz-2Wk_cYfJYXUw  提取码:bjp8 2. 配置环境变量 pat ...

  9. Sharepoint server 2016自定义作业不能部署

    最近帮客户部署SharePoint server 2016生产环境,自定义作业总是不能部署上,原来我在部署过程中MinRole选的是Web前端服务器:经过几天的测试研究,发现要有single serv ...

  10. 《从零开始学Swift》学习笔记(Day 33)——属性观察者

    原创文章,欢迎转载.转载请注明:关东升的博客 为了监听属性的变化,Swift提供了属性观察者.属性观察者能够监听存储属性的变化,即便变化前后的值相同,它们也能监听到. 属性观察者主要有以下两个: l ...