《网络攻防》Web基础
20145224陈颢文 《网络攻防》Web基础
基础问题回答
什么是表单:
- 表单是一个包含表单元素的区域。表单元素是允许用户在表单中输入信息的元素。表单在网页中主要负责数据采集功能。
浏览器可以解析运行什么语言:
- 超文本标记语言:HTML;
- 可扩展标记语言:XML;
- 脚本语言:ASP、PHP、Script、JavaScript、VBScript、Perl、Python、ColdFusion、Java、JSP等。
WebServer支持哪些动态语言:
- 比较常用的有ASP语言,PHP语言和JSP语言。
实验总结与体会
知识是用来提高自己能力的,不是单纯的用来应付考试,不能考了就忘,这样不好。想这次实验的内容就是上学期的课程内容,但我都忘得差不多了,好在还有点基础,学起来也快。
实践过程记录
Apache环境配置
- 使用
apachectl start指令开启apach服务; - 使用
netstat -aptn指令查看apache端口号(一般为80或8080);

- 在浏览器中输入
localhost:端口号,若跳转至如下界面则apache启动成功:

在页面中我们可以看到apache的工作目录为cd /var/www/html。
编写简单网页
- 在终端里进入到apache的工作目录下
cd /var/www/html; - 新建一个
.html文件;【上学期的基础,在这就不展示代码了】 - 打开浏览器访问
localhost:80/文件名.html,成功跳转到自己刚刚写好的网页:

javascript
- 下面是一个用户名和密码不能为空的用例:
<script>
function nameText(){
var name= document.getElementByIdx_x ("username");
var divID= document.getElementByIdx_x ("divName");
divID.innerHTML="";
if(name.value==""){
divID.innerHTML="用户名不能为空";
return false;
}
}
function passText(){
var pass= document.getElementByIdx_x ("password");
var divIP= document.getElementByIdx_x ("divPass");
divIP.innerHTML="";
if(pass.value==""){
divIP.innerHTML="密码不能为空";
return false;
}
}
}
</script>

PHP
- 新建一个PHP测试文件
test.php,代码如下:
<?php
echo ($_GET["A"]);
include($_GET["A"]);
echo "php page test!<br>";
?>
- 用浏览器打开
localhost:80/test.pgp,可以看见如下界面,测试成功:

MySQL
在终端输入
/etc/init.d/mysql start启用MySQL;输入
mysql -u root进去MySQL;

依次输入:
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网页编写
- 在
/var/www/html路径下编写登录网页login.html,代码如下:
<html>
<body>
<div id="login">
<title>login</title>
<h1>Welcome</h1>
<form name='form' class="form" method='get' action='login.php' >
<input type="text" required="required" placeholder="username" name='username'><br>
<input type="password" required="required" placeholder="password" name='password'><br>
<button class="but" type='submit'>Login</button>
</form>
</div>
</body>
</html>
- 在同样的目录编写
login.php,代码如下:
<?php
$uname=$_GET['username'];
$pwd=$_GET['password'];
echo $uname;
$query_str="SELECT * FROM users WHERE username='{$uname}' and password=password('{$pwd}');";
$str="SELECT * FROM users WHERE username='{$uname}' and password=password('{$pwd}');";
$mysqli = new mysqli("127.0.0.1", "MySQL用户名", "MySQL密码", "刚刚建立的库表的表名");
/* check connection */
if ($mysqli->connect_errno) {
printf("Connect failed: %s\n", $mysqli->connect_error);
}
else echo "hehehe.<br>";
if ($result1= $mysqli->multi_query($query_str))
echo "badbadbad <br> ";
$mysqli->close();
$mysqli = new mysqli("127.0.0.1", "MySQL用户名", "MySQL密码", "刚刚建立的库表的表名");
/* check connection */
if ($mysqli->connect_errno) {
printf("Connect failed: %s\n", $mysqli->connect_error);
exit();
}
/* Select queries return a resultset */
if ($result = $mysqli->query($query_str)) {
if ($result->num_rows > 0 ){
echo "<br> Wellcome login Mr/Mrs:{$uname} webpage-jumping !!!!!<br> ";
header("Refresh:5;url=welcome.php");
} else {
echo "Wrong ID or Password, <br> login failed!!!! <br> " ;
}
/* free result set */
$result->close();
}
else
{ echo "EXM???";}
$mysqli->close();
?>
- 在浏览器中输入
localhost/login.html就可以访问自己的登陆页面啦:


SQL注入
- SQL注入实际上就是利用已有的语法知识在页面中用来填写用户名密码的地方来写脚本,从而达到非法登陆等目的;
- 在用户名输入框中输入
' or 1=1#,可以强行登陆:

- 通过SQL注入将用户名和密码保存在数据库中
';insert into users(userid,username,password,enabled) values(666,'新的用户名',password("新用户的密码"),"TRUE");# - 然后就可以使用刚刚注入的新用户名密码登陆啦:

XSS攻击
- XSS表示跨站脚本攻击,通过插入恶意脚本,实现对用户游览器的控制。
具体来说假如用户提交的数据含有js代码,不做任何处理就保存到了数据库,读出来的时候这段js代码就变成了可执行的代码。一般用户提交的数据永远被认为是不安全的,在保存之前要做对应的处理。 - 先将一张图片保存到
/var/www/html目录下; - 在用户名处输入
<img src="图片名" />haha</a>,点击登录就会出现图片5212.jpg的超链接:

(我的图片加载失败了,很尴尬,但是从源代码上还是可以看出攻击成功的~)
《网络攻防》Web基础的更多相关文章
- Golang友团无闻Go语言Web基础视频教程
教程内容:GO语言资料Golang友团无闻Go语言编程基础Golang友团无闻Go语言Web基础教程 Go语言Web基础教程列表:[Go Web基础]12Go Web 扩展学习.mp4[Go Web基 ...
- HT for Web基础动画介绍
在上一篇<基于HT for Web矢量实现3D叶轮旋转>一文中,我略微提了下HT for Web基础动画的相关用法,但是讲得不深入,今天就来和大家分享下HT for Web基础动画的相关介 ...
- Web基础开发最核心要解决的问题
Web基础开发要解决的问题,往往也就是那些框架出现的目的 - 要解决问题. 1. 便捷的Db操作: 2. 高效的表单处理: 3. 灵活的Url路由: 4. 合理的代码组织结构: 5. 架构延伸 缓存. ...
- web基础--html
WebBasic 1.web应用体系 课程大纲 1.web基础:做网页 2.结构: a.html 勾勒网页结构及内容 b.css ...
- java web基础环境搭建
java web基础环境包括:(1)servlet容器也即tomcat(2)jre即java程序运行环境 环境变量配置:分别下载jdk和tomcat安装包. jdk环境变量配置: 第一步:系统环境变量 ...
- Web基础知识和技术
WEB是一个外延广泛的概念,不单单指网站,乌徒帮专注拥有WEB界面的网站开发,帮助初学者或已经进入开发的朋友们提供参考讨论平台,然而并不一定能将所有的WEB知识讲全讲透,只是能满足初涉者的建站需求,能 ...
- java web基础 --- URL重定向Filter
java web基础 --- URL重定向Filter httpRequest.getRequestDispatcher("/helloWorld").forward(httpRe ...
- (0)写给Web初学者的教案-----Web基础
0,Web基础 一. What is the Web? Can It Eat? 很多同学可能都听说过一个名词叫做“Web”,这个词隐隐约约好像和我们上网相关.但是呢,又很难说的清楚.我们今天每位 ...
- web基础系列(五)---https是如何实现安全通信的
https是如何实现安全通信的 如果有不正确的地方,还望指出! web基础系列目录 总结几种常见web攻击手段极其防御方式 总结几种常见的安全算法 回顾 总结几个概念(具体描述可以看上一篇文章) 数字 ...
- web基础笔记整理(一)
一.程序的分层 1.界面层: 某种类型的应用程序 a.DOS(控制台运行) b.桌面应用程序--独立安装,独立运行 c.web类型--现在流行的 单机版:电脑上要安装,程序升级之后,电脑上也要升级-- ...
随机推荐
- TF-IDF(词频-逆向文件频率)用于文字分类
SVM分类器:支持向量机Support Vector Machine. 一个普通的SVM就是一条直线,用来完美划分linearly separable的两类.解决线性 要解决非线性需要到高维处理: 核 ...
- 【APIO2014】Palindromes
#103. [APIO2014]Palindromes 统计 描述 提交 自定义测试 给你一个由小写拉丁字母组成的字符串 ss.我们定义 ss 的一个子串的存在值为这个子串在 ss 中出现的次数乘以这 ...
- 【BZOJ3798】特殊的质数 分块打表
[BZOJ3798]特殊的质数 Description 求[A,B]之间的质数个数,并且满足X=Q^2+P^2,P,Q是正整数. Input 第一行输入A,B Output 输出有多少组P,Q满足条件 ...
- Powershell数据处理
1.导出csv文档 Export-Csv D:\ps\xxx.csv -Encoding UTF8 -NoTypeInformation 2.发送mail $from="frommailad ...
- 关于vtt 与 srt 字幕 的相互转换
我在下载的udacity中教程时,字幕和视频是分离的,对于英文还无法完全听懂的我来说,字幕还是比较重要.不想看解释的可直接跳到最后复制代码运行即可. 查看了vtt和srt的区别,使用记事本打开vtt和 ...
- Qt 如何自动安装常用依赖?
使用 *.prf 文件自动安装依赖 在 Qt\Qt5.9.5\5.9.5\msvc2015\mkspecs\features 路径中添加 auto_install.prf 文件 然后在程序配置文件(* ...
- python单线程解决并发
1.单线程解决并发 方式一 import socket import select # 百度创建连接:非阻塞 client1 = socket.socket() client1.setblocking ...
- 算法分析之——heap-sort堆排序
堆排序是一种原地排序算法,不使用额外的数组空间,运行时间为O(nlgn).本篇文章我们来介绍一下堆排序的实现过程. 要了解堆排序.我们首先来了解一个概念,全然二叉树. 堆是一种全然二叉树或者近似全然二 ...
- hibernate自动建表之engine设置
1.MYSQL的数据库引擎中,只有InnoDB和BDB(Berkley DB )包括了对事务处理和外键的支持.如果数据引擎建为MyISAM则rollback无效. 2.而hibernate自动建表的时 ...
- Python3+Selenium3自动化测试-(二)
python3 元素定位和操作方法总结 # coding=utf-8 ''' #8种元素定位方法 find_element_by_id() find_element_by_name() find_el ...