20145303刘俊谦 Exp8 Web基础

基础问题回答

1.什么是表单?

表单是一个包含表单元素的区域,表单元素是允许用户在表单中(比如:文本域、下拉列表、单选框、复选框等等)输入信息的元素,表单在网页中主要负责数据采集功能,一个表单有三个基本组成部分:表单标签、表单域、表单按钮;

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

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

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

JavaScript、ASP、PHP、Ruby等脚本语言,ASP基于IIS WEB SERVER,是微软的服务器端脚本技术,PHP基于APACHE WEB SERVER,与ASP有几分类似,都是一种在服务器端执行的嵌入HTML文档的脚本语言。

实践内容

Apache

通过apachectl start开启Apach,使用netstat -aptn查看端口占用:在这里apach2占用端口5303

测试apache是否正常工作:在kali的浏览器上输入localhost:5303

简单的网页编写

访问Apache工作目录cd /var/www/html,新建一个5303.html文件

编写一个含有表单的html

打开浏览器访问:localhost:5303/5303.html,成功出现如下界面

在上面的文本框内键入几个字母,然后点击确认按钮数据会传送到 "html_form_action.php" 的页面,由于没有对此页面进行编辑,出现的是404

javascript相关

1.相关概念:JavaScript是一种广泛用于客户端Web开发的脚本语言,常用来给HTML网页添加动态功能,比如响应用户的各种操作。

2.文档对象模型(Document Object Model,简称DOM,是W3C组织推荐的处理可扩展标志语言的标准编程接口。

3.编写验证用户名和密码的规则:(比如用户名和密码不能为空)

    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测试文件vi /var/www/html/test.php,输入如下

用浏览器打开localhost:5303/test.php,可以看见如下界面,测试成功

MySQL基础

开启sql服务/etc/init.d/mysql start

输入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退出

重新输入mysql -u root –p,检测新密码能否成功使用,能成功登录即可。

在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文件夹下输入vim login.html,编写登录网页

输入vim login.php,通过php实现对数据库的连接

在浏览器中输入localhost:5303/login.html,就可以访问自己的登陆页面

在登录页面中输入数据库中存有的用户名和密码并点击提交进行用户认证登录成功,输入数据库中没有的就会认证失败

SQL注入

SQL注入是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。

具体来说,它是利用现有应用程序,将(恶意的)SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。

简单地说,SQL注入的产生原因通常是将用户输入的字符串,当成了 “sql语句” 来执行。

1.搭建一个网站实现用户登录,这一步已经完成。

2.构造SQL语句:在用户名输入框中输入' or 1=1#,密码随便输入,这时候的合成后的SQL查询语句为select * from users where username='' or 1=1#' and password=md5('')

以下的两句sql语句等价:

select * from users where username='' or 1=1#' and password=md5('')

select * from users where username='' or 1=1

3.因为1=1永远是都是成立的,即where子句总是为真,所以能够成功登录



通过SQL注入将用户名和密码保存在数据库中

';insert into users(userid,username,password,enabled) values(666,'aaa',password("aaa"),"TRUE");#

成功注入

此时在登录页面输入用户名145303密码145303,成功

XSS攻击

XSS表示Cross Site Scripting(跨站脚本攻击),通过插入恶意脚本,实现对用户游览器的控制。

具体来说假如用户提交的数据含有js代码,不做任何处理就保存到了数据库,读出来的时候这段js代码就变成了可执行的代码。一般用户提交的数据永远被认为是不安全的,在保存之前要做对应的处理。

1.输入<img src="20145303.jpg" />5303LJQ</a>先进行简单的测试

2.点击登录就会出现图片20145303.jpg的超链接

发帖和会话管理的实现

我们可以利用PHP实现会话管理,这部分的详细代码参考ltc同学的代码,将代码依旧放在/var/www/html目录下,在浏览器中输入http://localhost:5303/logIn.php,进行登录:

登录成功后如图所示:

点击start a new post!发帖,进入如下界面:

提交之后跳转到如下界面,可以选择查看发过的帖子、继续发帖、返回或者退出登录:

这个时候点击CHECK查看发过的帖子,但是却什么内容都没有,由于这个操作是通过从data.txt文件中读取之前发帖时保存的记录来查看发帖内容,但是在/var/www/html目录下根本没有找到这个文件,这就说明之前创建也没有成功,后面发现/var/www/html底下文件默认的都是属于root的,其他用户没有权限进行操作,所以我们可以先使用touch data.txt建一个data.txt文件,再对该文件进行加权:

再次发帖查看,可以成功显示之前的发帖历史:

20145303刘俊谦 Exp8 Web基础的更多相关文章

  1. 20145303刘俊谦 《网络对抗》Exp9 Web安全基础实践

    20145303刘俊谦 <网络对抗>Exp9 Web安全基础实践 基础问题回答 1.SQL注入原理,如何防御 SQL注入 就是通过把SQL命令插入到"Web表单递交"或 ...

  2. 20145303刘俊谦《网络攻防》Exp4 Msf基础

    20145303刘俊谦<网络攻防>Exp4 Msf基础 实验目标 • 掌握metasploit的基本应用方式,掌握常用的三种攻击方式的思路. • 一个主动攻击,如ms08_067: • 一 ...

  3. 20145303 刘俊谦《网络对抗》逆向及BOF基础实践

    20145303 刘俊谦<网络对抗>逆向及BOF基础实践 1 逆向及Bof基础实践说明 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调 ...

  4. 20145303刘俊谦《网络对抗》Exp2 后门原理与实践

    20145303刘俊谦<网络对抗>Exp2 后门原理与实践 基础问题回答 1.例举你能想到的一个后门进入到你系统中的可能方式? •在网页上浏览不安全的网站或者下载不安全的软件 •通过发送邮 ...

  5. 20145303刘俊谦 Exp7 网络欺诈技术防范

    20145303刘俊谦 Exp7 网络欺诈技术防范 1.实验后回答问题 (1)通常在什么场景下容易受到DNS spoof攻击 局域网内的攻击,arp入侵攻击和DNS欺骗攻击 公共wifi点上的攻击. ...

  6. 20145303 刘俊谦《网络对抗》shellcode注入&Return-to-libc攻击深入

    20145303 刘俊谦<网络对抗>shellcode注入&Return-to-libc攻击深入 Shellcode注入 shellcode实际是一段代码,但却作为数据发送给受攻击 ...

  7. 20145303刘俊谦 《Java程序设计》第4周学习总结

    20145303刘俊谦 <Java程序设计>第4周学习总结 教材学习内容总结 1.继承:继承是面向对象的第二大特征,避免多个类间重复定义共同行为.把单独抽取出来的那个类称为父类,其他的多个 ...

  8. 20145303刘俊谦 Java 代码托管

    (20145303刘俊谦) Java 第三周代码托管 这是最近保存下来的代码,今天一起上传的,有很多在代码学习过程中无意识删掉了:

  9. 20145303刘俊谦 《Java程序设计》第三周学习总结

    20145303刘俊谦 <Java程序设计>第三周学习总结 教材学习内容总结 1.类与对象: 类:对现实生活中事物的描述,定义类时用关键词class 对象:这类事物实实在在存在的个体,利用 ...

随机推荐

  1. codeforces 883H - Palindromic Cut - [字符串处理]

    题目链接:http://codeforces.com/problemset/problem/883/H Time limit: 3000 ms Memory limit: 262144 kB Koly ...

  2. spring boot+mybatis 系列

    https://blog.csdn.net/linxingliang/article/details/52324937 https://www.cnblogs.com/a8457013/p/90749 ...

  3. CCCC L2-008. 最长对称子串

    https://www.patest.cn/contests/gplt/L2-008 题解:想法是扫一遍string,将每一个s[i]作为对称轴,写一个判定函数:不断向两边延伸直到不是回文串为止. ...

  4. python3.5 安装python3-tk

    https://blog.csdn.net/qq_18293213/article/details/74483516 在python3.5下安装好matplotlib后,准备显示一张图片测试一下,但是 ...

  5. Jena 操作 RDF 文件

    1. RDF 入门 RDF(Resource Description Framework)是由W3C规定的,描述资源(resource)的数据模型(data model),: RDF 使用Web标识符 ...

  6. 钱币兑换问题--hdu1284(完全背包)

    Problem Description 在一个国家仅有1分,2分,3分硬币,将钱N兑换成硬币有很多种兑法.请你编程序计算出共有多少种兑法.   Input 每行只有一个正整数N,N小于32768.   ...

  7. Python开发【笔记】:获取mp3文件获取信息

    import eyed3 def main(): mp3 = '8200031001_13429822982_1_00163e086216990b11e82403f00d3d9a.mp3' xx = ...

  8. 使用Spring配置动态数据源实现读写分离

    最近搭建的一个项目需要实现数据源的读写分离,在这里将代码进行分享,以供参考.关键词:DataSource .AbstractRoutingDataSource.AOP 首先是配置数据源 <!-- ...

  9. Java-mybatis-一次执行多条SQL语句

    mysql数据库 1.修改数据库连接参数加上allowMultiQueries=true,如: hikariConfig.security.jdbcUrl=jdbc:mysql://xx.xx.xx: ...

  10. python接口测试中安装whl格式的requests第三方模块

    下载 安装 requests第三方模块 下载:http://docs.python-requests.org/en/latest/user/install/#install 我下载是 https:// ...