20145202马超《网络对抗》Exp8 Web基础
1.本实践的具体要求有:
(1).Web前端HTML(1分)
能正常安装、启停Apache。理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML。
(2).Web前端javascipt(1分)
理解JavaScript的基本功能,理解DOM。编写JavaScript验证用户名、密码的规则。
(3).Web后端:MySQL基础:正常安装、启动MySQL,建库、创建用户、修改密码、建表(1分)
(4).Web后端:编写PHP网页,连接数据库,进行用户认证(1分)
(5).最简单的SQL注入,XSS攻击测试(1分)
功能描述:用户能登陆,登陆用户名密码保存在数据库中,登陆成功显示欢迎页面。
课题负责人需要完成:登陆后可以发贴;会话管理。
1.实验后回答问题
(1)什么是表单
就是个表,与后台数据库相连
(2)浏览器可以解析运行什么语言。
html语言,js语言。
(3)WebServer支持哪些动态语言
js算不算动态语言?如果算那就是
2.实验总结与体会
感觉跟上学期刘念老师教的那些差不多,多了个php文件,以及一些攻击方法,不过应对这些攻击方法,我感觉限制一下最大的输入字符数就可以解决吧?
3.实践过程记录
Apache
先通过apachectl start命令开启Apach,使用netstat -aptn命令查看端口占用:
因为端口号80已经被占用(上次实验设置的),所以改/etc/apache2/ports.conf里的端口为5202后重新开启阿帕奇,再次查看端口:
可以在浏览器中输入localhost:5208来检查是否正常开启,这里可以看到打开了上次实验的网页,开启正常:
简单的表单网页
- 可以对之前的index.html进行修改,改成一个有表单功能的网页
到这里我突然有点后悔用steam官网的网页,里面的东西太多了,可以看到前20行基本上都是超链接。
- 上图为改之前,下图为改之后
打开网页的效果,在浏览器里面输入127.0.0.1:5202就可以打开它
提交之后是404,因为没有php文件
javascript
- 我感觉js其实就是用java语言写网页,java提供的接口在我们写网页时会很方便,其他作感觉用都是编出来的。
js验证用户名和密码的规则
PHP测试
- 一个简单的php测试代码
<?php
echo ($_GET["A"]);
include($_GET["A"]);
echo "this is my first php page!
";
?>
20145202 打开localhost:5202/mc.php
MySQL
- 使用命令/etc/init.d/mysql start打开mysql服务
输入mysql -u root -p,并根据提示输入密码,默认密码为p@ssw0rd,进入MySQL
可以使用命令show databases;查看信息(分号不可以漏掉,分号代表命令的结束):
修改密码:
输入use mysql;,选择mysql数据库
输入select user, password, host from user;,mysql库中的user表中存储着用户名、密码与权限
输入UPDATE user SET password=PASSWORD("新密码") WHERE user='root';
输入flush privileges;,更新权限
输入quit退出
重新登录就可以发现密码修改成功
创建新表
使用如下两条命令可以建立新表:
CREATE SCHEMA库表的名称
;
CREATE TABLE库表的名称
.users
(
userid
INT NOT NULL COMMENT '',
username
VARCHAR(45) NULL COMMENT '',
password
VARCHAR(256) NULL COMMENT '',
enabled
VARCHAR(5) NULL COMMENT '',
PRIMARY KEY (userid
) COMMENT '');
向表中添加内容:
use 刚刚建立的库表的表名
insert into users(userid,username,password,enabled) values(1,'用户id',password("用户密码"),"TRUE");
- 现在再查看信息就可以看到新建表:
php+mysql编写网页
- 网页的登录页面:
login
Welcome
Login
register - 但是我不会往kali里面复制粘贴,偶然发现文件夹里面有个写好的login1.html,我就改了一下自己用了,它对应的是login.php
这里有个问题就是提交不上去,无奈我把正确的代码一个一个字母敲了上去,同时我也发现kali里面自带的那个login.html里面是有提醒的:”do not click me!“
实现与数据库链接的php页面:
<?php
$uname=($_GET["username"]);
$pwd=($_GET["password"]);
echo $uname;
$query_str="SELECT * FROM users where username='{$uname}' and password=password('{$pwd}');";
echo "
{$query_str}
";
$mysqli = new mysqli("127.0.0.1", "root", "5202", "haha");
/* check connection */
if ($mysqli->connect_errno) {
printf("Connect failed: %s\n", $mysqli->connect_error);
}
else echo "lalalademaxiya.
";
if ($result1= $mysqli->multi_query($query_str))
echo "lalalajiecaobujianle
";
$mysqli->close();
$mysqli = new mysqli("127.0.0.1", "root", "5202", "haha");
/* 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 "
Wellcome login Mr/Mrs:{$uname}
";
} else {
echo "
login failed!!!!
" ;
}
/ free result set */
$result->close();
}
$mysqli->close();
?>
- 同样,我文件夹里有个login.php,我就改了一下直接用了
- 效果:
SQL注入
在网页登录的用户名中填写' or 1=1#,成功登录:
- 或者在用户名框中输入';insert into users(userid,username,password,enabled) values(888,'mc',password("20145202"),"TRUE");#,在数据库中可以直接插入一个伪造的用户名,密码,下次就可以用伪造的用户名密码登录网站了
这个没有做尝试,当时电脑快没电了,但是原理是懂的。
XSS攻击
- 跨站脚本攻击(Cross Site Scripting),恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。
- 在登录的用户名中输入:20145202,就可以访问目录下的图片
- 最后向娄老师致敬,来张git的图
20145202马超《网络对抗》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是静态显示网页的,无法跟服务器进行交互,所以 ...
随机推荐
- easyui学习笔记12—tab标签页的添加和删除
这一篇我们来看看标签页的添加和删除动作.我在想看这些例子还不如看文档,文档的内容更加全面,但是文档全部是理论没有实际的操作,看起来很枯燥,文档只能是遇到问题的时候查.easyui的文档写的还是很详细的 ...
- Codeforces Round #430 (Div. 2) 【A、B、C、D题】
[感谢牛老板对D题的指点OTZ] codeforces 842 A. Kirill And The Game[暴力] 给定a的范围[l,r],b的范围[x,y],问是否存在a/b等于k.直接暴力判断即 ...
- Java -- Arrays.asList()方法
Arrays.asList() 是将数组作为列表 问题来源于: public class Test { public static void main(String[] args) { int[] a ...
- Mac OS系统下配置hosts的方法
首先,介绍下什么是hosts Hosts是一个没有扩展名的系统文件,可以用系统自带的记事本等工具打开,作用就是将一些常用的网址域名与其对应的IP地址建立一个关联,当用户在浏览器输入一个需要登录的网址时 ...
- 关于使用eclipse maven UpdateProject时报错,无法更新本地仓库的问题解决方案
在做项目中,需要从同事电脑中把Maven项目copy过来,但是copy的过程中只copy了代码,setting.xml文件和pom.xml,使用eclipse把项目导入,有红色的感叹号提示,由于我没有 ...
- 关于JWT.NET
1.JWT的概念: JWT全称是Json Web Token,是一种用于双方之间传递安全信息的简洁的.URL安全的表述性声明规范.JWT作为一个开放的标准( RFC 7519 ),定义了一种简洁的,自 ...
- 不推荐在iOS的浏览器应用上使用click和mouseover
iOS上的Safari也支持click 和mouseover等传统的交互事件,只是不推荐在iOS的浏览器应用上使用click和mouseover,因为这两个事件是为了支持鼠标点击而设计 出来的.Cli ...
- Vue教程:过滤器filters(五)
Vue.js 允许你自定义过滤器,可被用于一些常见的文本格式化.过滤器可以用在两个地方:双花括号插值和 v-bind 表达式 (后者从 2.1.0+ 开始支持).过滤器应该被添加在 JavaScrip ...
- JQuery给一个元素绑定两次点击事件(第二次点击事件)
由于项目的要求,需要给复选框设置样式,初始样式:,第一次点击的时候显示,第二次点击时候需要改变该样式:. 设计思路: 当点击次数为奇数时显示带有颜色的图片 当点击次数为偶数时显示没有颜色的图片 下边是 ...
- REST解惑
本文是「架构风格:你真的懂REST吗?」的补充! REST全称是Representational State Transfer,目前普遍接受的中文翻译为「表述性状态转移」! 即使翻译过来了,你依然有一 ...