20145239杜文超《网络对抗》- Web基础
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基础的更多相关文章
- 20145239杜文超《网络对抗》- Web安全基础实践
20145239杜文超<网络对抗>- Web安全基础实践 基础问题回答 (1)SQL注入攻击原理,如何防御? SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查 ...
- 20145239杜文超《网络对抗》- shellcode注入&Return-to-libc攻击深入
20145239杜文超<网络对抗>- shellcode注入&Return-to-libc攻击深入 shellcode基础知识 Shellcode是一段代码,作为数据发送给受攻击服 ...
- 20145239杜文超《网络攻防》- MSF基础应用
20145239杜文超<网络攻防>- MSF基础应用 基础问题回答 1.用自己的话解释什么是exploit,payload,encode? exploit:实现攻击行为的主体,但没有载荷只 ...
- 20145239 杜文超 实验四 Android开发基础
20145239实验四 Android开发基础 实验内容 基于Android Studio开发简单的Android应用并部署测试 了解Android组件.布局管理器的使用 掌握Android中事件处理 ...
- 网络对抗——web基础
网络对抗--web基础 实践内容 (1)Web前端HTML (2)Web前端javascipt (3)Web后端:MySQL基础:正常安装.启动MySQL,建库.创建用户.修改密码.建表 (4)Web ...
- 20145239杜文超 实验五 Java网络编程
20145239 实验五 Java网络编程 实验内容 组队,一人服务器,一人客户端. 下载加解密代码,先编译运行代码,一人加密一人解密,适当修改代码. 然后集成代码,一人加密后通过TCP发送,加密使用 ...
- 20145239杜文超 《Java程序设计》第10周学习总结
20145239 <Java程序设计>第10周学习总结 教材学习内容总结 Java的网络编程 网络编程 网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据. 网络概述 1.计算机 ...
- 20145239杜文超 《Java程序设计》第8周学习总结
20145239 <Java程序设计>第8周学习总结 教材学习内容总结 通用API 日志API 1.java.util.logging包提供了日志功能相关类与接口,使用日志的起点是logg ...
- 20145239杜文超 《Java程序设计》实验二 Java面向对象程序设计实验报告
20145239 <Java程序设计>实验二 Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S. ...
随机推荐
- 第一百七十四节,jQuery,Ajax进阶
jQuery,Ajax进阶 学习要点: 1.加载请求 2.错误处理 3.请求全局事件 4.JSON 和 JSONP 5.jqXHR 对象 在 Ajax 课程中,我们了解了最基本的异步处理方式.本章,我 ...
- 集合Map映射(使用xml文件)
Hibernate允许我们将Map元素与RDBMS进行映射. 我们知道,List和Map是基于索引的集合. 在map的情况下,索引列作为键,元素列用作值. 使用xml文件在集合映射中映射Map的示例 ...
- [AC自己主动机+状压dp] hdu 2825 Wireless Password
题意: 给n.m,k ,再给出m个单词 问长度为n的字符串.至少在m个单词中含有k个的组成方案有多少种. 思路: 因为m最大是10,所以能够採取状压的思想 首先建立trie图,在每一个单词的结束节点标 ...
- JavaScript核心(晋级高手必读篇)
本文是对“ECMA-262-3 in detail”系列学习内容的概述与总结.如果你对ES3系列文章感兴趣,本文每一节内容均包含相应ES3系列章节的链接,以供阅读与获取更深入的解释. 本文预期读者:有 ...
- NDK,在JNI层使用AssetManager读取文件
NDK,二进制文件数据读取,在JNI层,通过AAssetManager读取asset内部的资源: 需要头文件的支持 #include <android/asset_manager_jni.h&g ...
- OpenCV学习笔记:opencv_ml模块
一,简介 该模块为opencv的机器学习(machine learning,ml)代码库,包含各种机器学习算法: 0, class CvStatModel ; class CvMLData; stru ...
- vue 流程
1.vue 项目搭建 2.监听 3.组件 4.路由
- Codeforces Round #324 (Div. 2) (快速判断素数模板)
蛋疼的比赛,当天忘了做了,做的模拟,太久没怎么做题了,然后C题这么简单的思路却一直卡到死,期间看了下D然后随便猜了下,暴力了下就过了. A.找一个能被t整除的n位数,那么除了<=10以外,其他都 ...
- Kotlin——中级篇(一):类(class)详解
在任何一门面向对象编程的语言里,类(class)是非常基础.但也是非常重要的一项组成,通俗的说就是万般皆对象,而所说的对象就是我们生成的类.Kotlin也是如此,下面详细为大家介绍Kotlin中的类的 ...
- 边双联通问题求解(构造边双连通图)POJ3352(Road Construction)
题目链接:传送门 题目大意:给你一副无向图,问至少加多少条边使图成为边双联通图 题目思路:tarjan算法加缩点,缩点后求出度数为1的叶子节点个数,需要加边数为(leaf+1)/2 #include ...