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基础的更多相关文章

  1. Golang友团无闻Go语言Web基础视频教程

    教程内容:GO语言资料Golang友团无闻Go语言编程基础Golang友团无闻Go语言Web基础教程 Go语言Web基础教程列表:[Go Web基础]12Go Web 扩展学习.mp4[Go Web基 ...

  2. HT for Web基础动画介绍

    在上一篇<基于HT for Web矢量实现3D叶轮旋转>一文中,我略微提了下HT for Web基础动画的相关用法,但是讲得不深入,今天就来和大家分享下HT for Web基础动画的相关介 ...

  3. Web基础开发最核心要解决的问题

    Web基础开发要解决的问题,往往也就是那些框架出现的目的 - 要解决问题. 1. 便捷的Db操作: 2. 高效的表单处理: 3. 灵活的Url路由: 4. 合理的代码组织结构: 5. 架构延伸 缓存. ...

  4. web基础--html

    WebBasic 1.web应用体系 课程大纲 1.web基础:做网页     2.结构:         a.html             勾勒网页结构及内容         b.css     ...

  5. java web基础环境搭建

    java web基础环境包括:(1)servlet容器也即tomcat(2)jre即java程序运行环境 环境变量配置:分别下载jdk和tomcat安装包. jdk环境变量配置: 第一步:系统环境变量 ...

  6. Web基础知识和技术

    WEB是一个外延广泛的概念,不单单指网站,乌徒帮专注拥有WEB界面的网站开发,帮助初学者或已经进入开发的朋友们提供参考讨论平台,然而并不一定能将所有的WEB知识讲全讲透,只是能满足初涉者的建站需求,能 ...

  7. java web基础 --- URL重定向Filter

    java web基础 --- URL重定向Filter httpRequest.getRequestDispatcher("/helloWorld").forward(httpRe ...

  8. (0)写给Web初学者的教案-----Web基础

    0,Web基础 一.    What is the Web? Can It Eat? 很多同学可能都听说过一个名词叫做“Web”,这个词隐隐约约好像和我们上网相关.但是呢,又很难说的清楚.我们今天每位 ...

  9. web基础系列(五)---https是如何实现安全通信的

    https是如何实现安全通信的 如果有不正确的地方,还望指出! web基础系列目录 总结几种常见web攻击手段极其防御方式 总结几种常见的安全算法 回顾 总结几个概念(具体描述可以看上一篇文章) 数字 ...

  10. web基础笔记整理(一)

    一.程序的分层 1.界面层: 某种类型的应用程序 a.DOS(控制台运行) b.桌面应用程序--独立安装,独立运行 c.web类型--现在流行的 单机版:电脑上要安装,程序升级之后,电脑上也要升级-- ...

随机推荐

  1. 修改了JS代码,刷新网页后,加载的JS还是原来旧的?

    本地修改JS脚本后,刷新网页看一下修改后的执行效果,结果调试显示加载的JS还是原来旧的,反复刷新均无效,郁闷! 解决办法:清理一下浏览器缓存(长经验了!)     Ctrl+Shift+Del 清除G ...

  2. oralce函数

    1.trunc函数处理数字和日期TRUNC(NUMBER[,DECIMAL]) 数字格式TRUNC(DATE[,FOMAT]) 日期格式2.round函数(四舍五入)ROUND(NUMBER[,DEC ...

  3. Laravel5.1 分页展示

    Laravel为我们提供了一套分页的逻辑,我们无需自己实现分页逻辑,只需要执行几个简单的方法就能实现漂亮的分页. 1 simplePaginate 这是一种只显示上一页下一页的样式分页,我们来看看怎么 ...

  4. Mysql数据库存储是乱码问题(或者在查询时无法加载数据)

    在连接数据库时添加一行代码即可解决:?useUnicode=true&characterEncoding=utf8 截图如下:

  5. 浅述python中range()函数的用法

    函数用法说明: 用法一:range(m) 输出: [0,1,...,m-1](从0到m-1的一个list,不包括m) 示例: 用法二:range(m,n),m<n 输出:[m,m+1,..,n- ...

  6. Kotlin教程——史上最全面、最详细的学习教程,持续更新中....

    关于这个系列教程,我是从最基础的开发环境搭建到项目进阶到后面的项目开发这个过程来写的.我一直秉承从实际项目开发以及源码解析的角度去写好这个教程,并让从未接触过编程的朋友能学好kotlin这门语言.所以 ...

  7. python中的json和pickle

    author:headsen chen date::2018-04-10  09:56:54 json模块和pickle模块: 这是用于序列化的两个模块: 概念介绍:json和pickle模块是将数据 ...

  8. spring定时器的cronexpression表达式

    转自:https://www.cnblogs.com/yaowen/p/3779284.html 相关配置: import com.alibaba.dubbo.config.annotation.Se ...

  9. jQuery.each(object, [callback])数组对象操作--jQuery 对象访问 $().each(callback)

    jQuery.each(object, [callback]) 通用例遍方法,可用于例遍对象和数组. 不同于例遍 jQuery 对象的 $().each() 方法,此方法可用于例遍任何对象.回调函数拥 ...

  10. svn实现共享文件夹/文件或svn文件夹/文件链接

    我们在实际开发过程中,经常会遇到这种情况,多个项目组使用同一公共底层代码:公共底层代码是有专门负责人开发的,其它项目组只是使用即可,那么多个项目组就需要把公共底层代码放到各自的解决方案或目录文件下,解 ...